3

我正在使用 solr,我在文本字段中使用 StandardTokenizerFactory,但我不想在下划线上拆分。我是否必须使用像 PatternTokenizerFactory 这样的另一个标记器,或者我可以使用 StandardTokenizerFactory 来做到这一点?因为我需要 StandardTokenizerFactory 的相同功能,但下划线没有拆分。

4

2 回答 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 回答