Parámetros SnowballPorterFilterFactory y Wildcard de Solr
-
28-09-2020 - |
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:
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.
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
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.
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).