【问题标题】:Don't split on underscore with solr.StandardTokenizerFactory不要使用 solr.StandardTokenizerFactory 在下划线上拆分
【发布时间】:2013-03-20 17:58:29
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我认为您不能在 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>
    

    这里是发生了什么的屏幕截图:

    【讨论】:

      【解决方案2】:

      添加以下似乎对 StandardTokenizerFactory 有用,因为 StandardTokenizerFactory 在连字符“-”处拆分。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多