【问题标题】:How to configure SOLR to index by preserving the original case, but query by ignoring case如何通过保留原始大小写来配置 SOLR 以进行索引,但通过忽略大小写进行查询
【发布时间】:2016-02-03 07:33:23
【问题描述】:

这是我的用例:

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

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

  1. 黄业汉
  2. 黄业汉
  3. 王业汉

现在,当用户输入“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>

使用此配置,我可以通过保留原始大小写来索引名称,但查询始终区分大小写,这意味着当用户输入“wong”时,SOLR 仅返回“wong yek hon”。请告知如何使查询不区分大小写?

谢谢

【问题讨论】:

    标签: solr


    【解决方案1】:

    在 Solr 中以不区分大小写模式进行查询。您可以将 analyzer 和 query 都保留为 &lt;filter class="solr.LowerCaseFilterFactory"/&gt;

    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>
    

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 2018-01-11
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多