2011-11-03 12 views
7

tengo campo "text_general" en schema.xmlSolr campos de texto tipo equivocado

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

que he guardado:

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

y campos "hechizo", "testata" tiene un "text_general" tipo.

Buscando trabajar muy bien para mí:

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

Pero con la clasificación existe algún problema:

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

Me devuelve el siguiente resultado:

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 entiendo por qué mi clasificación no funciona correctamente. Debería devolverme un resultado como este:

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" 

Respuesta

20

La ordenación no funciona bien en campos multivalorados y tokenizados.
Como testata se ha definido con text_general tipo de campo, se tokensized y, por tanto, el género no funcionaría bien.

Documentación - La clasificación se puede hacer en el "puntaje" del documento, o en cualquier campo multiValued = "false" indexed = "true" siempre que el campo no sea tokenizado (es decir: no tenga Analyzer) o use un analizador que sólo produce un solo término (es decir: utiliza el KeywordTokenizer)

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

uso cadena como el tipo de campo y copia el campo de título en el nuevo campo.

+0

+1. Eso es lo que terminé haciendo para habilitar el "orden" en campos multivalor: tenía el primer valor de cada uno duplicado en un campo de cadena correspondiente, y ordenaba esos. –

+0

¡Gracias! Estaba usando un tipo de campo de "coincidencia parcial" y no pude entender por qué mis resultados regresaban completamente desordenados. El cambio a un campo de texto regular lo corrigió :) – masterchief

Cuestiones relacionadas