我有一个'title'的字符串字段,我想按字母顺序排序。我使用Solr 4.10.2进行搜索和排序。由于默认情况下strFields区分大小写,我注意到Solr正在通过ASCII排序(大写字母优先于小写字母)排序我的标题,而不是按字母顺序排序。
数学:代数概论
数学:介绍
数学:介绍
数学:代数概论
<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排序
答案 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"
进行区分。