如何通过保留原始案例来配置SOLR以进行索引,但是通过忽略大小写来进行查询

时间:2016-02-03 07:33:23

标签: solr

这是我的用例:

在我的应用中,有一个字段可输入人名。我希望通过SOLR让这个人名自动建议。

让我在示例中解释,假设之前用户输入了以下值:

  1. Wong Yek Hon
  2. wong yek hon
  3. WONG YEK HON
  4. 现在,当用户输入" wong"时,我的应用程序会将所有3个选项列为自动建议。同样,当用户输入" WONG"时,我的应用程序也会列出所有3个选项。

    以下是我配置SOLR schema.xml的方法:

    <fieldType name="text_sentence_auto" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>
    

    使用这种配置,我可以通过保留原始案例来索引名称,但查询始终区分大小写,当用户输入&#34; wong&#34;时,意思是SOLR只返回&#34; wong yek汉&#34 ;.请告知如何使查询不区分大小写?

    由于

1 个答案:

答案 0 :(得分:0)

在Solr中以不区分大小写的模式进行查询。您可以将分析器和查询保持为<filter class="solr.LowerCaseFilterFactory"/>

LowerCaseFilterFactory 仅是过滤器工厂。它不会影响您的存储数据。它保留了索引文档中的区分大小写..

配置Solr schema.xml:

<fieldType name="text_sentence_auto" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>