2010-08-10 5 views
5

Tengo un campo de texto realmente grande (más de 5000 caracteres) en SOLR llamado Descripción. Hasta ahora funciona muy bien para buscar y resaltar. Si realizo una búsqueda y no hay partes resaltadas, entonces solo muestro los primeros 300 caracteres. Lo que me gustaría hacer es simplemente devolver los 300 caracteres en el resultado de SOLR.¿Cómo devuelvo solo una parte truncada de un campo en SOLR?

Me gustaría hacer esto porque cuando estoy probando obtengo un mejor rendimiento si devuelvo un resultado más pequeño. Esto se debe probablemente a que el documento XML es más pequeño, por lo que hay menos tiempo en el cable y luego el procesamiento es más rápido porque el documento es más pequeño.

He pensado en utilizar un nuevo campo que acaba de almacenar los primeros 300 caracteres. Creo que esto funcionaría, pero me preguntaba si había una solución mejor o más nativa.

Respuesta

7

Lo que está buscando es resaltar hl.maxAlternateFieldLength (http://wiki.apache.org/solr/HighlightingParameters#hl.maxAlternateFieldLength).

Deberá definir el campo como su propio campo alternativo. Si desea resaltar el campo Description, los parámetros de consulta de relieve serían:

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

Por último, para omitir el campo Description del resultado de la consulta, se le tiene que excluirlo del parámetro fl consulta:

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

Fantástico, esto es exactamente lo que necesitaba y funciona perfectamente. –

Cuestiones relacionadas