Сконфигурируйте Solr для выполнения сортировки значений без учета регистра
У меня есть поле-имя под названием "клиент" содержит следующие значения,
- Брукс Спорт
- AM-Records
- 1elememt
- ALTAVISTA
- Adidas
- 3gdata
- яблоко
- БМВ
- 7eleven
БИК корпорация
поле клиента в solr schema.xml
<field docValues="true" indexed="true" multiValued="false" name="customer" stored="true" type="TextField"/>
Мне нужно выполнить сортировку без учета регистра для вышеуказанных потребительских ценностей. так что я могу получить данные следующим образом,
- 1elememt
- 3gdata
- 7eleven
- Adidas
- ALTAVISTA
- AM-Records
- яблоко
- БИК корпорация
- БМВ
- Брукс Спорт
Для этого я создаю новое поле copyField с именем "customer_sort" в файле sche.xml.
<field docValues="true" indexed="true" multiValued="false" name="customer_sort" stored="false" type="LowerTextField"/>
fieldType в sche.xml
<fieldType name="LowerTextField" class="solr.TextField" sortMissingLast="true" positionIncrementGap="1000">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
copyfield в sche.xml
<copyField source="customer" dest="customer_sort"/>
в настоящее время результат сортировки
- 1elememt
- 3gdata
- 7eleven
- ALTAVISTA
- AM-Records
- Adidas
- яблоко
- БМВ
- Брукс Спорт
- БИК корпорация
сортировка происходит по значению ascii. то есть (A тогда a, B тогда b,...).
То же самое случилось, когда я попробовал alphaOnlySort.
Кто-нибудь может сказать мне, что мне не хватает?
Спасибо
2 ответа
@MatsLindh Пожалуйста, найдите изображения для Solr_query и analyzer_screen выглядит так
Можете ли вы использовать это в schema.xml, а также упомянули type = "TextField". Я хотел бы знать об этом.
<fieldType name="LowerTextField" class="solr.TextField" sortMissingLast="true" positionIncrementGap="1000">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>