在solr中进行搜索时如何忽略点和其他字符

时间:2018-12-12 13:28:46

标签: solr

我在solr字段中有参考号,看起来像这样:

L2.816.4.53.2
42010N-0002
42010N/0002

现在我要搜索它,并获得一个匹配的字符串,同时也不要包含点/破折号/斜杠:

L28164532
42010N0002
42010N0002

我怎么用solr做到这一点?当前搜索ref:L28164532不会返回结果,因为没有存储这样的值。

1 个答案:

答案 0 :(得分:0)

您可以为您的字段尝试以下字段类型吗?

<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
          <!-- Splits words based on whitespace characters --> 
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <!-- splits words at delimiters based on different arguments --> 
          <filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" catenateNumbers="1"/>
          <!-- Transforms text to lower case -->   
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>

        <analyzer type="query">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
  </fieldType>

此处WordDelimiterGraphFilterFactory具有许多属性,使用这些属性将帮助您获得所需的结果。您可以详细了解WordDelimiterGraphFilterFactory here

,例如catenateWordscatenateAllcatenateNumbers。根据要求修改属性。修改后,可能需要重新启动服务器。您可以使用Solr管理员界面进行这些尝试和测试。