我正在使用 solr,我在文本字段中使用 StandardTokenizerFactory,但我不想在下划线上拆分。我是否必须使用像 PatternTokenizerFactory 这样的另一个标记器,或者我可以使用 StandardTokenizerFactory 来做到这一点?因为我需要 StandardTokenizerFactory 的相同功能,但下划线没有拆分。
问问题
1227 次
2 回答
2
我不认为你可以在 StandardTokenizerFactory 中做到这一点。一种解决方案是首先将下划线替换为 StandardTokenizerFactory 不会处理的内容以及您的文档不会包含的内容。例如,您可以先用PatternReplaceCharFilterFactory_
替换QQ
到处,然后通过 StandardTokenizerFactory ,然后用使用PatternReplaceFilterFactory替换。这是执行此操作的 fieldType 定义:QQ
_
<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>
这是发生的情况的屏幕截图:
于 2013-03-30T05:08:18.583 回答
0
由于 StandardTokenizerFactory 在连字符“-”处拆分,因此添加以下内容似乎对 StandardTokenizerFactory 有用。
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="_"
replacement="-"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
于 2016-06-27T22:52:03.267 回答