Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Solr SortableTextField执行不区分大小写的排序_Solr - Fatal编程技术网

无法使用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并不是我的选择,因为在我的情况下,排序依据的字段是多值的。对于如何在多值字段上实现不区分大小写的排序,您有什么建议吗?