不要使用solr.StandardTokenizerFactory拆分下划线

时间:2013-03-30 00:04:41

标签: ruby-on-rails-3 solr sunspot sunspot-rails sunspot-solr

我正在使用solr,我在文本字段中使用StandardTokenizerFactory,但我不想在下划线上拆分。 我是否必须使用另一个类似PatternTokenizerFactory的toknizer,或者我可以使用StandardTokenizerFactory执行此操作?因为我需要StandardTokenizerFactory的相同功能,但没有下划线。

2 个答案:

答案 0 :(得分:2)

我认为你不能在StandardTokenizerFactory中做到这一点。一种解决方案是首先使用StandardTokenizerFactory不会处理的内容替换下划线,以及文档不会包含的内容。例如,您可以先使用PatternReplaceCharFilterFactory_替换为QQ,然后通过StandardTokenizerFactory,然后使用PatternReplaceFilterFactoryQQ替换为_。这是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>

以下是发生的事情的屏幕截图:

Analysis Tool Screenshot

答案 1 :(得分:0)

添加以下内容似乎为StandardTokenizerFactory做了诀窍,因为StandardTokenizerFactory在连字符处拆分&#34; - &#34;。

<charFilter class="solr.PatternReplaceCharFilterFactory" 
                    pattern="_" 
                    replacement="-"/>
      <tokenizer class="solr.StandardTokenizerFactory"/>