如何在solr查询中忽略区分大小写

问题描述 投票:1回答:1

我有一个由名称和位置组成的数据库。我正在使用不区分大小写来搜索名称USING SOLR。但是,我无法找到任何可以做到这一点的方法。例如:我有一个名单列表:

拉吉夫拉吉夫拉吉拉杰

当我搜索cname:raj *我得到以下rajeev raj

我怎么做拉杰夫和拉吉也。

solr case-insensitive solr-query-syntax
1个回答
4
投票

您应该添加一个新的过滤器solr.LowerCaseFilterFactory将所有内容转换为小写,这应该适用于索引和查询。

分析器是在索引时和/或搜索时预处理输入文本的组件。在索引和查询时使用以兼容方式处理文本的相同或类似分析器非常重要。例如,如果索引分析器小写单词,则查询分析器应该执行相同操作以查找索引单词。

https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers

一个例子: Schema.xml的

<field name="Name" type="text_general" indexed="true" stored="true"/>

其中text_general类型

<fieldType name="text_general" class="solr.TextField" omitNorms="false" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    tokenizerFactory="solr.WhitespaceTokenizerFactory"/>
  </analyzer>
</fieldType>
© www.soinside.com 2019 - 2024. All rights reserved.