Сконфигурируйте Solr для выполнения сортировки значений без учета регистра

У меня есть поле-имя под названием "клиент" содержит следующие значения,

  1. Брукс Спорт
  2. AM-Records
  3. 1elememt
  4. ALTAVISTA
  5. Adidas
  6. 3gdata
  7. яблоко
  8. БМВ
  9. 7eleven
  10. БИК корпорация

    поле клиента в solr schema.xml

    <field docValues="true" indexed="true" multiValued="false" name="customer" stored="true" type="TextField"/>
    

Мне нужно выполнить сортировку без учета регистра для вышеуказанных потребительских ценностей. так что я могу получить данные следующим образом,

  1. 1elememt
  2. 3gdata
  3. 7eleven
  4. Adidas
  5. ALTAVISTA
  6. AM-Records
  7. яблоко
  8. БИК корпорация
  9. БМВ
  10. Брукс Спорт

Для этого я создаю новое поле 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"/>

в настоящее время результат сортировки

  1. 1elememt
  2. 3gdata
  3. 7eleven
  4. ALTAVISTA
  5. AM-Records
  6. Adidas
  7. яблоко
  8. БМВ
  9. Брукс Спорт
  10. БИК корпорация

сортировка происходит по значению 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>

Другие вопросы по тегам