2011-11-03 77 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)" 

我不`噸明白爲什麼我的分揀工作不正確。它應該返回像這樣的結果:

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」索引=「true」字段上完成排序,前提是該字段是非標記化的(即:沒有分析器)或使用只產生一個單一期限的分析(即:使用KeywordTokenizer)

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

使用字符串作爲字段類型和標題字段複製到新的領域。

+0

+1。這就是我最終在多值字段上啓用「排序」的方法:將每個人的第一個值複製到相應的字符串字段中,然後對其進行排序。 –

+0

謝謝!我使用的是「部分匹配」字段類型,無法弄清爲什麼我的結果完全返回未排序。切換到固定的文本字段固定:) – masterchief