我設置一個場與被配置爲Solr的patternreplacefilterfactory給出不匹配的值
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="#(\w+)" replacement="HTAG.$1 $1"/>
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="#(\w+)" replacement="HTAG.$1"/>
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我的目標類型是索引兩個詞和#words。因此#usopen
將被索引爲usopen
和#usopen
。
然後查詢除參數hl
之外的參數爲hl.fl=text&hl.fragsize=0&hl.simple.pre=<tag>hl.simple.post=</tag>&hl.requireFieldMatch=true
。
當我查詢usopen
,突出顯示爲文本#usope<tag>n</tag>
值和查詢#usopen
時,顯示爲<tag>usope</tag>n
文本值。
上述配置有什麼問題,並幫助我解決它。
CharFilter無法進行標記。它必須是第一。 CharFilter /分詞器/過濾器。 –
我按照您指定的順序設置字段。問題在於突出顯示。更新了qn。 – Babu