solr 不区分大小写的排序不起作用 [英] solr case insensitive sort not working
本文介绍了solr 不区分大小写的排序不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 solr schema.xml 中有一个字段
I have one field in 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>
我已经在我的代码中设置了排序字段
and I have set sort field in my code
query.addSortField("short_name_copy", ORDER.asc);
但是当我得到搜索结果时,它不区分大小写.它首先给出所有骆驼大小写结果,然后给出所有小写字母
But When I get search result its not sorted case insensitive. It gives all camel case result first and then all lower case
如果我有短名字
巴努
阿杰
没有
苏迪尔
尼禄
有点像 Ajay、Banu、Nilesh、anil、sudhir
It sorts like Ajay, Banu, Nilesh, anil, sudhir
谁能告诉我这里出了什么问题
Can anybody please tell me whats wrong here
(我的搜索字段是short_name)
(My search field is short_name)
推荐答案
这是因为您只在查询时使用分析器.要做你想做的事,你必须使用类似的东西:
This is because you are using your analyzer only in query time. To do what you want to do, you have to use something like:
<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 不区分大小写的排序不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文