2013-03-08 97 views
1

我正在使用eZ Find,eZ Publish的solr前端,索引一些包含日文文本和html標籤的字段。索引CJK和剝離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管理搜索すもも,HTML標籤在結果​​中:

<str name="attr_free_1_t"><h1>ほげほげ<h1><p>すもももももももものうち</p></str> 

我怎樣才能防止來自HTML標籤m索引?

在此先感謝。

回答

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> 
+0

謝謝!事實上,存儲的字符串和索引字符串是不同的。因爲我只關心索引字符串,所以我的當前設置將會很好,但是正則表達式的好處是。 – Eric 2013-03-08 14:35:35