使用Solr按字母顺序排序字符串

时间:2018-04-10 16:25:04

标签: sorting solr

上下文

我有一个'title'的字符串字段,我想按字母顺序排序。我使用Solr 4.10.2进行搜索和排序。由于默认情况下strFields区分大小写,我注意到Solr正在通过ASCII排序(大写字母优先于小写字母)排序我的标题,而不是按字母顺序排序。

当前行为(asc排序)

数学:代数概论

数学:介绍

欲望行为(asc sort)

数学:介绍

数学:代数概论

schema.xml中的代码

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

<field name="string" stored="false" type="string_ci" multiValued="false" indexed="true"/>

即使重新启动Solr,重新索引,排序仍然是ASCII排序

1 个答案:

答案 0 :(得分:1)

该字段必须在索引时小写。

删除定义中的type属性,使其适用于索引和查询:

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

如果您需要针对每个阶段使用不同的分析器,请包含两个<analyzer>个定义,这些定义使用类型属性"index""query"进行区分。