我正在使用eZ Find,eZ Publish的前端来solr,索引一些包含日文文本和html标签的字段。
我在schema.xml中修改了文本分析器:
<fieldType name="text" class="solr.TextField">
<analyzer>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.CJKTokenizerFactory"/>
</analyzer>
</fieldType>
例如,如果我的自定义字段包含:
<h1>ほげほげ<h1>
<p>すもももももももものうち</p>
我在solr admin中搜索すもも
,html标签在结果中:
<str name="attr_free_1_t"><h1>ほげほげ<h1><p>すもももももももものうち</p></str>
如何防止HTML标记被编入索引?
提前致谢。
答案 0 :(得分:3)
使用solr.HTMLStripCharFilterFactory,您只能阻止HTML代码“已编入索引”,而不是“已存储”。
换句话说,您将获得"すもももももももものうち"
的结果(当然使用HTML标记),但不会获得"<p>すもももももももものうち</p>"
的结果。
注意:假设你在搜索过程中不会剥离html标签。
如果您不希望将这些HTML标记编入索引,则可以使用solr.PatternReplaceCharFilterFactory。
您的配置可能如下,
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="Your regular expression to match HTML tags"
replacement=""/>
<tokenizer class="solr.CJKTokenizerFactory"/>
</analyzer>