Невозможно выполнить сортировку без учета регистра с помощью Solr SortableTextField - PullRequest
0 голосов
/ 17 декабря 2018

У меня проблема с сортировкой по полю с указанным ниже типом

<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 голосов
/ 18 декабря 2018

Проблема здесь в том, что

SortableTextField - это специализированная форма TextField, которая поддерживает функции Sorting и ValueSource, используя docValues, построенные из первых символов maxCharsForDocValues ​​оригинальных (предварительно проанализированных) строковых значенийэто поле.

, что означает, что даже если вы указали цепочку анализатора, она все равно будет сортировать исходные (предварительно проанализированные) значения, которые могут иметь верхний / нижний регистр.Итак, если вы действительно хотите отсортировать по анализируемым значениям (что не всегда так), вам нужно использовать solr.TextField .В соответствии с вашими требованиями - вы все равно сможете выполнять поиск без учета регистра, используя это поле, просто сортировка будет работать по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...