簡體   English   中英

配置Solr對值執行不區分大小寫的排序

[英]Configure Solr to perform case-insensitive sort on values

我有一個名為“客戶”的字段名稱,其中包含以下值,

  1. 布魯克斯體育
  2. AM記錄
  3. 1元素
  4. 阿爾塔維斯塔
  5. 阿迪達斯
  6. 3g數據
  7. 蘋果
  8. 寶馬
  9. 七十一
  10. 比克公司

    solr schema.xml中的customer字段

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

我需要對以上客戶價值執行不區分大小寫的排序。 這樣我就可以獲得如下數據

  1. 1元素
  2. 3g數據
  3. 七十一
  4. 阿迪達斯
  5. 阿爾塔維斯塔
  6. AM記錄
  7. 蘋果
  8. 比克公司
  9. 寶馬
  10. 布魯克斯體育

為此,我在scheme.xml中創建一個名為“ customer_sort”的新copyField字段。

        <field docValues="true" indexed="true" multiValued="false" name="customer_sort" stored="false" type="LowerTextField"/>

scheme.xml中的fieldType

        <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>

scheme.xml中的copyfield

<copyField source="customer" dest="customer_sort"/>

目前的排序結果是

  1. 1元素
  2. 3g數據
  3. 七十一
  4. 阿爾塔維斯塔
  5. AM記錄
  6. 阿迪達斯
  7. 蘋果
  8. 寶馬
  9. 布魯克斯體育
  10. 比克公司

根據ascii值排序。 即(A然后a,B然后b,...)。

當我嘗試alphaOnlySort時,也會發生同樣的情況。

有人可以告訴我我失蹤了嗎?

謝謝

@MatsLindh請找到Solr_query的圖像, analyser_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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM