2011-11-03 20 views
7

ho campo "text_general" in schema.xmlSolr tipo sbagliato campi di testo

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

ho memorizzati:

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

"incantesimo" e campi "testata" ha un "text_general" genere.

Ricerca lavorando bene per me:

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

Ma con l'ordinamento esiste qualche problema:

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

Mi restituisce questo risultato:

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

I don `t capisco perché il mio smistamento funziona non correttamente. Dovrebbe restituirmi il risultato in questo modo:

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" 

risposta

20

L'ordinamento non funziona bene su campi multivalore e tokenizzati.
Poiché testata è stato definito con il tipo di campo text_general, verrà tokenato e quindi l'ordinamento non funzionerà correttamente.

Documentazione - L'ordinamento può essere eseguito sul "punteggio" del documento o su qualsiasi campo multiValued = "false" indicizzato = "true" a condizione che il campo sia non tokenizzato (ovvero: non abbia Analyzer) o usi un analizzatore che produce un solo termine (cioè: usa il KeywordTokenizer)

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

Usa stringa come tipo di campo e copiare il campo del titolo nel nuovo campo.

+0

+1. Questo è quello che ho finito per abilitare "sort" su campi multivalore: il valore di ognuno di essi è stato duplicato in un campo di stringa corrispondente e l'ordinamento su quelli. –

+0

Grazie! Stavo usando un tipo di campo "corrispondenza parziale" e non riuscivo a capire perché i miei risultati stessero tornando completamente non ordinati. Passare a un campo di testo regolare risolvibile :) – masterchief

Problemi correlati