Pregunta

Tengo un problema al consultar Solr usando el siguiente tipo de campo:

<fieldType name="text_ci" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
       <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
   </analyzer>
</fieldType>

Como puede ver, aplica "SnowballPorterFilterFactory" al indexar y realizar consultas.Si indexo algo como

Cosas de ratón y diversión.

Se indexa como:

Index Breakdown in Solr

Como puede ver, "SnowballPorterFilterFactory" convierte la palabra "Mouse" en "Mous".Que es lo que queremos.Sin embargo, cuando buscamos

Ratón*

No parece aplicar "SnowballPorterFilterFactory" de la misma manera.Supongo que por el * al final.

Query Breakdown in Solr

Mi pregunta es..¿Hay alguna manera de que "SnowballPorterFilterFactory" conozca los comodines?Para que cuando pregunte por

Ratón*

No obtengo 0 resultados.

Curiosamente si pregunto por

ratón*

El disco vuelve.

¿O alguien puede ofrecer una mejor manera de consultar/indexar este tipo de campo?

gracias dave

¿Fue útil?

Solución

de la Preguntas frecuentes :

A diferencia de otros tipos de consultas de Lucene, comodines, prefijo y consultas difusas no se pasan a través del analizador, que es el componente que realiza operaciones, como el stemming y la reducción de la baja. El motivo de saltarse el analizador es que si estaba buscando "perros *", no querrías "perros" primero se derivó de "perro", ya que eso coincidiría con el "perro *", que no es la consulta prevista. Estas consultas son insensibles a la caja de todos modos porque QueryParser los hace minúsculas. Este comportamiento se puede cambiar utilizando el método SETLOWERCASEEXPANDEDTERMS (BOOLEAN)

Si está bien con el cambio de su origen SOLR, solr-757 Tiene un parche adjunto a él que puede encontrar útil. Sin embargo, no conozco una manera de cambiar este otro que bucear en la fuente.

¿Qué podría ser una idea más sencilla: solo tenga un campo de copia que no se deriva? El usuario puede buscar estos dos campos, y luego el mouse * coincidirá en el campo que no se muestra.

(Editar: En realidad, mirando ese parche, no estoy seguro de que hará lo que quiere. Pero básicamente solo necesitas cambiar tu controlador de consultas para STEM primero.)

Otros consejos

La última vez que reviso, cuando use comodines, el analizador de consultas no se utiliza.Por lo tanto, ya que está utilizando una función en minúscula, sus términos se indexan en minúsculas y la búsqueda de MOUS * no devolverán nada.

Creo que lo único que debe hacer cuando está usando comodines es para asegurarse de adaptar su consulta a la forma en que se indexan sus términos (de una manera similar a lo que haría su análisis de consultas).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top