2016-11-02 5 views
0

私は次のようにソルのテキストフィールドを持っています。結果をアルファベット順にタイプ=テキストで並べ替え

<field name="news_headline_ln_en" type="text_en" indexed="true" stored="true"/> 

結果を次のように並べ替えるクエリを実行すると、正しいアルファベット順の結果が表示されません。

http://localhost:8983/solr/news/select?fl=news_headline_ln_en&indent=on&q=*:*&rows=100&sort=news_headline_ln_en%20desc&start=0&wt=json 

結果応答:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":45, 
    "params":{ 
     "q":"*:*", 
     "indent":"on", 
     "fl":"news_headline_ln_en", 
     "start":"11610", 
     "sort":"news_headline_ln_en asc", 
     "rows":"12021", 
     "wt":"json", 
     "_":"1478085256196"}}, 
    "response":{"numFound":12621,"start":11610,"docs":[ 
     { 
     "news_headline_ln_en":"Eleven stocks up despite UAE markets decline"}, 
     { 
     "news_headline_ln_en":"\nOil Prices Decline on Fed Rate Rise Jitters"}, 
     { 
     "news_headline_ln_en":"Euro unemployment rate declines in February"}, 
     { 
     "news_headline_ln_en":"Investors Holding’s Q4 profits decrease"}, 
     { 
     "news_headline_ln_en":"DED honors ‘On Time’ in Oud Metha for excellence"}, 
     { 
     "news_headline_ln_en":"\nTreasures From The Deep -- WSJ"}, 
     { 
     "news_headline_ln_en":"Tunisia shares deepen early losses"}, 
     { 
     "news_headline_ln_en":"EGX deepens losses in week"}, 
     { 

あなたはそれがアルファベット順にソートされていない見ることができるように。誰でも可能な理由を知っていますか?助けをお待ちしています。

答えて

1

できません。 text_enはソートには適していません。これは入力をトークン化し、テキストを別々のトークンに分割するためです。これらのトークンはソートに使用できません。

は、そのようなあなたは、文字列を小文字にできるようになりますKeywordTokenizer(とstringフィールドまたはテキストフィールドとして、並べ替えに適しであること以上のフィールドへtext_enフィールドからソリューションis to add a copyField instructionコピーしたコンテンツが、ソートを大文字小文字を区別しないようにするには、単一のトークンとして保持します)。文字列フィールドを使用している場合は、大文字小文字を区別しないようにするには、フィールドを小文字にする必要があります。

<copyField source="news_headline_ln_en" dest="news_headline_ln_en_sort" /> 

..ソートにはsort=text_sortを使用してください。 maxCharsの設定は、元の文字列の先頭部分のみをコピーする必要がある場合に使用します(たとえば、記事の先頭で並べ替える場合は、記事の最初の20〜40文字が必要です便利である)。

defining fieldsおよびSchema APIも参照してください。

+0

私はあなたのアプローチで試しました。しかし、それは '多値フィールドに並べ替えることはできませんと言う:news_headline_ln_en_sort "'ここで私が使用したコードは、 ' <トークナイザ'' = "false" を多値:フィールドは複数値できないように設定し、クラス= "solr.KeywordTokenizerFactory" /> \t <フィルタクラス= "solr.LowerCaseFilterFactory" /> ' – Channa

+0

。 – MatsLindh

関連する問題