索引CJK并剥离HTML标记

时间:2013-03-08 06:28:32

标签: solr ezpublish

我正在使用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标记被编入索引?

提前致谢。

1 个答案:

答案 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>