2010-08-10 10 views
5

Ho un campo di testo molto grande (5000+ caratteri) in SOLR denominato Descrizione. Finora funziona benissimo per la ricerca e l'evidenziazione. Se eseguo una ricerca e non ci sono parti evidenziate, mostro solo i primi 300 caratteri. Quello che mi piacerebbe fare è restituire i 300 caratteri nel risultato di SOLR.Come posso restituire solo una parte troncata di un campo in SOLR?

Mi piacerebbe farlo perché durante i test ottengo prestazioni migliori se restituisco un risultato più piccolo. Ciò è probabilmente dovuto al fatto che il documento XML è più piccolo, quindi meno tempo sul cavo e quindi l'elaborazione è più veloce perché il documento è più piccolo.

Ho pensato di utilizzare un nuovo campo che ha appena memorizzato i primi 300 caratteri. Penso che funzionerebbe, ma mi chiedevo se esistesse una soluzione migliore o più nativa.

risposta

7

Quello che stai cercando è l'evidenziazione hl.maxAlternateFieldLength (http://wiki.apache.org/solr/HighlightingParameters#hl.maxAlternateFieldLength).

Sarà necessario definire il campo come il proprio campo alternativo. Se si vuole evidenziare il campo Description, i parametri di query di evidenziazione sarebbero:

hl=true 
hl.fl=Description 
f.Description.hl.alternateField=Description 
hl.maxAlternateFieldLength=300 

Infine, di omettere il campo Description dal risultato della query, si dovrà escluderlo dal parametro fl query:

fl=score,url,title,date,othermetadata 
+0

Fantastico, questo è esattamente ciò di cui avevo bisogno e funziona perfettamente. –

Problemi correlati