Sphinx volviendo malos resultados de la búsqueda
-
09-09-2019 - |
Pregunta
Estoy utilizando Esfinge con el pensamiento plugin de Sphinx. He indexado un modelo llamado lugar con el siguiente código (y el rastrillo thinking_sphinx: comando de índice)
define_index do
indexes :name
indexes city
indexes zip
end
obtengo los resultados en mi controlador con este código:
@venues = Venue.search params[:search]
y me las hacen como JSON. El problema que tengo es que cuando llegué a esta URL:
http://localhost:3000/venue/list?search=Baltimo
no consigo nada. Pero cuando llegué a la siguiente dirección:
http://localhost:3000/venue/list?search=Baltimor
consigo todas las Sedes ubicadas en la ciudad de Baltimore. Por alguna razón que un personaje hace una diferencia. Teóricamente, que debería llegar a todos los lugares de Baltimore si sólo una búsqueda con un personaje - 'b'
¿Alguien sabe lo que está pasando aquí?
Gracias
Solución
A menos que haya enable_star
pone a 1 y min_prefix_len
o min_infix_len
establecen en 1 o más, no se va a B para que coincida con Baltimore (y aún así, creo que es necesario buscar para B * para obtener la tonalidad).
¿Qué pasa aquí es que, por defecto, Pensando Esfinge dice Sphinx utilizar un analizador lingüístico Inglés, lo que permite similares palabras (por caracteres, no por sentido) para ser considerados partidos, por lo que pone < strong> Baltimor y Baltimore en la misma cesta.
Si desea obtener cualquier parte de cualquier palabra coincide, entonces hay que poner algo como lo siguiente en config / sphinx.yml:
development:
enable_star: 1
min_infix_len: 1
test:
enable_star: 1
min_infix_len: 1
production
enable_star: 1
min_infix_len: 1
A continuación, dejar de Sphinx, re-índice, y reiniciar Esfinge. Una vez que hayas hecho esto, entonces las búsquedas de B * deben volver Baltimore.
Espero que esto ayude.