我正在使用solr,我在文本字段中使用StandardTokenizerFactory,但我不想在下划线上拆分。 我是否必须使用另一个类似PatternTokenizerFactory的toknizer,或者我可以使用StandardTokenizerFactory执行此操作?因为我需要StandardTokenizerFactory的相同功能,但没有下划线。
答案 0 :(得分:2)
我认为你不能在StandardTokenizerFactory中做到这一点。一种解决方案是首先使用StandardTokenizerFactory不会处理的内容替换下划线,以及文档不会包含的内容。例如,您可以先使用PatternReplaceCharFilterFactory将_
替换为QQ
,然后通过StandardTokenizerFactory,然后使用PatternReplaceFilterFactory将QQ
替换为_
。这是fieldType定义:
<fieldType name="text_std_prot" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="_"
replacement="QQ"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory"
pattern="QQ"
replacement="_"/>
...
</analyzer>
</fieldType>
以下是发生的事情的屏幕截图:
答案 1 :(得分:0)
添加以下内容似乎为StandardTokenizerFactory做了诀窍,因为StandardTokenizerFactory在连字符处拆分&#34; - &#34;。
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="_"
replacement="-"/>
<tokenizer class="solr.StandardTokenizerFactory"/>