「jack@gmail.com」、「jack1@gmail.com」のメールがあります。並べ替えたい
Solr は次の結果を返します。
jack1@gmail.com
jack@gmail.com
正しいソート結果は次のようになるはずです。
jack@gmail.com
jack1@gmail.com
このような構成:
<field name="email" type="string" indexed="true" stored="true"/>
誰でも助けることができますか?
以下は、solr の応答です。
{ "responseHeader":{ "status":0, "QTime":0, "params":{ "sort":"advertiser_email_t asc", "indent":"true", "q":":", "wt":"json", "response":{"numFound":3,"start":0,"docs":[ { "advertiser_email_t":"ad111@qq.com", "id":"01df4dea-beb3-46fb-940b-78eda109503c" }, { "advertiser_email_t":"ad@qq.com", "id":"935de002-10e0-437f-a571-e74bb6646228" }, { "advertiser_email_t":"wang@qq.com", "id":"2a80935e-e520-4c3e-8d56-8e7b1096b372"}] } }
これはフィールド定義です:
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
これはフィールド タイプの定義です。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> </アナライザー> <analyzer type="クエリ"> <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"/> </アナライザー> </fieldType>
フィールド名を「email」に変更した後:
{ "responseHeader": { "status": 0, "QTime": 0, "params": { "sort": "email asc", "indent": "true", "q": " : ", "_ ": "1383822359034", "wt": "json" } }, "response": { "numFound": 2, "start": 0, "docs": [ { "email": "ad1@qq.com" , "id": "00000000-0000-0000-0000-000000000002" }, { "email": "ad@qq.com", "id": "00000000-0000-0000-0000-000000000001" } ] } }