【问题标题】:solr case insensitive sort not workingsolr 不区分大小写的排序不起作用
【发布时间】:2015-07-31 12:02:17
【问题描述】:

我在 solr schema.xml 中有一个字段

<field name="short_name" type="text_general" indexed="true" stored="true" required="false" />
    <field name="short_name_copy" type="string_ci" indexed="true" stored="true" required="false" />
   <copyField source="short_name" dest="short_name_copy"/>

和字段类型

<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

我已经在我的代码中设置了排序字段

query.addSortField("short_name_copy", ORDER.asc);

但是当我得到搜索结果时,它不区分大小写。它首先给出所有骆驼大小写结果,然后给出所有小写字母

如果我有短名字

巴努

阿杰

没有

苏迪尔

尼禄

有点像 Ajay、Banu、Nilesh、anil、sudhir

谁能告诉我这里出了什么问题

(我的搜索字段是short_name)

【问题讨论】:

    标签: lucene


    【解决方案1】:

    这是因为您只在查询时使用分析器。要做你想做的事,你必须使用类似的东西:

    <fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    

    或者类似的东西:

    <fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    

    【讨论】:

    • 我在上面尝试过.. 但它仍然给我同样的结果
    • 我重新启动了 solr。它会重新索引对吗?我再次导入数据
    • 不,重新存储的 Solr 不会重新索引数据,您必须重新索引所有核心!
    • 一个也试过了。删除所有索引并重新索引但没有结果
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2019-01-31
    • 2020-09-13
    相关资源
    最近更新 更多