2011-11-03 6 views
7

私が持っている "text_general" フィールドSolrの間違ったソートテキストフィールド

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/><filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

私が保存された文書:

document1: 
    spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar" 
    testata = "Mattino di Padova (Il)" 

document2: 
    spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con" 
    testata = "Italia Oggi" 

document3 
    spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino" 
    testata = "Nuova Ferrara (La)" 

"スペル" と "testata" フィールドが "text_general" ありタイプ。

私のために正常に動作して検索:

http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'} 

しかし、ソートでは、いくつかの問題が存在する:

http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}&sort=testata desc 

それは私にこの結果を返します。

document1: 
     spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar" 
     testata = "Mattino di Padova (Il)" 

    document2: 
     spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con" 
     testata = "Italia Oggi" 

    document3 
     spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino" 
     testata = "Nuova Ferrara (La)" 

を私は理由を理解 `tを私のソーティングは正しく動作しません。

document3 
     spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino" 
     testata = "Nuova Ferrara (La)" 

    document1: 
     spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar" 
     testata = "Mattino di Padova (Il)" 

    document2: 
     spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con" 
     testata = "Italia Oggi" 

答えて

20

複数値フィールドとトークン化フィールドでソートがうまくいかない。
testataはフィールドタイプがtext_generalと定義されているため、トークン化され、ソートがうまく機能しません。

ドキュメント - ソートは、トークン化されていない(つまり、アナライザがない)、または使用されている場合は、ドキュメントの「スコア」、またはmultiValued = "false" indexed = "true"ただ一つのタームを生成アナライザ:フィールドタイプとして

http://wiki.apache.org/solr/CommonQueryParameters#sort

使用した文字列を(すなわちKeywordTokenizerを使用しています)して、新しいフィールドにタイトルフィールドをコピーします。

+0

+1。これは、多値フィールドで「ソート」を有効にするためにやったことです。それぞれの最初の値を対応する文字列フィールドに重複させて並べ替えます。 –

+0

ありがとう!私は "部分一致"フィールドタイプを使用していたので、なぜ結果が完全にソートされていないのか分かりませんでした。通常のテキストフィールドに切り替えると、上のようになります:) – masterchief

関連する問題