我在按如下所述对类型进行字段排序时遇到问题
<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),因为此类型也将用于在此字段上执行不区分大小写的搜索效果很好。
我想,LowerCaseFilterFactory足以应付这种情况。我在这里想念什么吗?
答案 0 :(得分:0)
这里的问题是
SortableTextField是TextField的一种特殊形式,它支持 排序和ValueSource函数,使用从 原始(预先分析)的前maxCharsForDocValues个字符 此字段的字符串值。
这意味着,即使您指定了分析器链,它仍将对原始(预先分析的)值进行排序,该值可能具有大写/小写形式。因此,如果您确实想对已分析的值进行排序(并非总是如此),则需要使用 solr.TextField 。根据您的要求-您仍然可以使用此字段执行不区分大小写的搜索,只是排序方式有所不同。