Solr搜索带下划线的文本(_)

时间:2016-06-15 10:34:37

标签: solr full-text-search

如何在中搜索包含下划线(_)的文本。例如:This_is_for_testing“。我想搜索”测试“。

2 个答案:

答案 0 :(得分:1)

我认为this_is_for_testing是您的索引文本?

StandardTokenizerFilterFactory不会在下划线上进行标记。您需要使用PatternReplaceCharFilterFactory将下划线转换为空格,然后对文本进行标记。

请参阅:PatternReplaceCharFilterFactory

    <filter class="solr.PatternReplaceFilterFactory" pattern="_"
     replacement=" " replace="all" />

所以索引将是

  1. this_is_for_testing
  2. 这是用于测试
  3. 这个|是|为|测试
  4. 您只需要在分析方面这样做。

答案 1 :(得分:1)

您可以将solr.WordDelimiterFilterFactory用于此作业。

 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <tokenizer class="solr.WhitespaceTokenizerFactory" />
      <filter class="solr.WordDelimiterFilterFactory"
            generateWordParts="1" catenateWords="1"
            generateNumberParts="1" catenateNumbers="0" splitOnNumerics="1"
            catenateAll="0" splitOnCaseChange="1"
            stemEnglishPossessive="1" preserveOriginal="1" />
       <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

enter image description here