无法使用Solr SortableTextField执行不区分大小写的排序

时间:2018-12-17 04:40:20

标签: solr

我在按如下所述对类型进行字段排序时遇到问题

<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足以应付这种情况。我在这里想念什么吗?

1 个答案:

答案 0 :(得分:0)

这里的问题是

  

SortableTextField是TextField的一种特殊形式,它支持   排序和ValueSource函数,使用从   原始(预先分析)的前maxCharsForDocValues个字符   此字段的字符串值。

这意味着,即使您指定了分析器链,它仍将对原始(预先分析的)值进行排序,该值可能具有大写/小写形式。因此,如果您确实想对已分析的值进行排序(并非总是如此),则需要使用 solr.TextField 。根据您的要求-您仍然可以使用此字段执行不区分大小写的搜索,只是排序方式有所不同。