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

¿Fue útil?

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.

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