Решением может быть изменение или манипулирование исходным полем в одном или нескольких новых полях. Каждое поле содержит поочередно алфавит c и цифру c часть.
Я имею в виду разделение нумерации c части на одно поле, например fieldNumeric
, и части алфавита на другое поле, например fieldAlpha
. .
Таким образом вы можете сортировать выходные данные, передавая список полей в нужном вам порядке в стандартное предложение запроса сортировки. Например:
sort= fieldNumeric asc, fieldAlpha asc
Но разделение значения не обязательно. Вы можете оставить одно поле с исходным значением и иметь другое поле с числовым значением c. Вы можете добиться извлечения значения numberi c, отфильтровав данные.
Я создал следующий тип поля
<fieldType name="text_replace" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="[^0-9.]+" replacement="" replace="all"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</field>
Вот моя страница анализа выглядит так:
Вот страница запроса:
Вот страница запроса с сортировкой по цена.