我在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
阿尼尔
的Sudhir
Nilesh制作
它像Ajay,Banu,Nilesh,anil,sudhir
一样有人可以告诉我这里有什么不对吗
(我的搜索字段是short_name)
答案 0 :(得分:4)
这是因为您仅在查询时使用分析仪。要做你想做的事,你必须使用类似的东西:
<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>