2012-03-05 18 views
5

en mi archivo de esquema Solr tengo un campo de búsqueda predeterminado que utiliza EdgeNGramFilterFactorybúsqueda en Solr con EdgeNGramFilterFactory y la longitud min de la consulta de búsqueda

<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front" /> 

supone que mi consulta de búsqueda es

tes 

por lo consigo resultados así:

tess 
test 
tesla 
... 

si busco

test 

que obtener resultados como

test 
tess 
tesla 
... 

Está bien porque uso EdgeNGramFilterFactory con minGramSize = 3 pero quiero lo siguiente:

Cuando busco una cadena cuya longitud es mayor de 3 caracteres (por ejemplo, prueba) Quiero que solr ignore todos los términos que constan de 3 caracteres (EdgeNGramFilterFactory). Cuando busco "prueba" no quiero obtener resultados como "tess" o "tesla". No obtendré los resultados que comienzan con la prueba (4 caracteres) como

test 
test for 
test-drive 
... 

¿Es posible configurar eso en sol?

Respuesta

5

Puede configurar el filtro EdgeNGram solo en el analizador de índice del campo; para el analizador de consultas, todavía realice tokenización regular sin EdgeNGram. De modo que cuando busque "prueba", solo se devolverán los resultados con el prefijo "prueba" exacta.

config, p. (no define EdgeNGram para el analizador de consultas)

<fieldType name=...> 
    <analyzer type="index"> 
     ... 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" /> 
    </analyzer> 
    <analyzer type="query"> 
     ... 
     <!-- <filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" /> --> 
    </analyzer> 
</fieldType> 
Cuestiones relacionadas