2011-11-26 10 views
6

Tengo un problema al buscar con Solr una frase que tiene palabras vacías. Solr envía el resultado con stopword y esta no es mi salida esperada.¿Cómo detener el resultado en solr, cuando la frase contiene una palabra de paso?

Agregué una palabra "prueba" en el archivo stopwords.txt. En schema.xml archivo, tengo el campo como

<field name="searchword" type="text" indexed="true" stored="true" /> 

que algunos datos indexados, luego trató de buscar en la ventana del navegador Solr de la siguiente manera: palabra de búsqueda: "prueba" y no he tenido resultado. Nuevamente, di una frase como palabra de búsqueda: "datos de prueba" y obtuve el resultado. ¿Cómo evitar tal escenario? Si contiene la palabra stop, Solr no debería dar ningún resultado. ¿Cómo detener el resultado en solr, cuando la frase contiene una palabra de paso?

El siguiente es el FieldType que estoy usando:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    </analyzer> 
    <analyzer type="query">   
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/> 
    </analyzer> 
</fieldType> 

necesito solución para Solr no proporcionó ningún resultado, mientras Doy frase que contiene la palabra vacía (prueba)

parada
+1

¿Podrías publicar tu schema.xml? – javanna

Respuesta

1

A" "palabra es una palabra que no se tiene en cuenta en una búsqueda; no es una palabra que "detiene" o invalida los resultados. Entonces, el comportamiento que explicas es el correcto: eso es lo que se supone que deben hacer las palabras stop.

No hay forma de que yo sepa en SOLR para "detener" la forma de los resultados cuando utilizas una palabra en particular (tal vez alguien tiene una idea?).

La única cosa que puedo pensar es: - No enviar la consulta a la SOLR cuando se observa esos términos en la consulta :) - Quitar los términos de los documentos antes de ponerlos en un índice (por ejemplo, utilizando un UpdateRequestProcessor) y usa las consultas AND, de esta forma cada vez que aparece un término no indexado en la consulta obtendrás cero resultados

Cuestiones relacionadas