无法使用Solr SortableTextField执行不区分大小写的排序
我在对类型如下的字段进行排序时遇到问题无法使用Solr SortableTextField执行不区分大小写的排序,solr,Solr,我在对类型如下的字段进行排序时遇到问题 <fieldType name="string_ci" class="solr.SortableTextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactor
<fieldType name="string_ci" class="solr.SortableTextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
该字段可以包含数字值和字母值。我的Solr版本是7.5.0
如果我按“fieldName desc”排序,该字段将首先对小写值进行排序,然后是大写,然后是数字
我希望能够在不考虑大小写的情况下对值进行排序,而且我不希望更改字段的类(SortableTextField),因为这种类型也将用于对该字段执行不区分大小写的搜索,这很好
我想,对于这种情况,小写的FilterFactory就足够了。这里有什么我遗漏的吗?这里的问题是 SortableTextField是TextField的一种特殊形式,支持 排序和ValueSource函数,使用从 第一个maxCharsForDocValues原始字符(预分析) 此字段的字符串值
这意味着,即使您指定了analyzer链,它仍然会对原始(预分析)值进行排序,这些值可以是大写/小写。因此,如果您真的想对分析的值进行排序(情况并非总是如此),您需要使用solr.TextField。根据您的要求-您仍然可以使用此字段执行不区分大小写的搜索,只是排序的工作方式不同。这里的问题是 SortableTextField是TextField的一种特殊形式,支持 排序和ValueSource函数,使用从 第一个maxCharsForDocValues原始字符(预分析) 此字段的字符串值
这意味着,即使您指定了analyzer链,它仍然会对原始(预分析)值进行排序,这些值可以是大写/小写。因此,如果您真的想对分析的值进行排序(情况并非总是如此),您需要使用solr.TextField。根据您的要求-您仍然可以使用此字段执行不区分大小写的搜索,只是排序方式会有所不同。尝试在solr admin页面上分析相同的内容……尝试在solr admin页面上分析相同的内容……是的,这意味着我必须使用copyField进行排序。谢谢@riteshKumar如果对你有帮助,请接受答案并投票it@Mysterion很好的回答,很好的信息,“预分析”部分。不幸的是,切换到solr.TextField并不是我的选择,因为在我的情况下,排序依据的字段是多值的。您对如何在多值字段上实现不区分大小写的排序有什么建议吗?是的,这意味着我必须使用copyField进行排序。谢谢@riteshKumar如果对你有帮助,请接受答案并投票it@Mysterion很好的回答,很好的信息,“预分析”部分。不幸的是,切换到solr.TextField并不是我的选择,因为在我的情况下,排序依据的字段是多值的。对于如何在多值字段上实现不区分大小写的排序,您有什么建议吗?