tengan significados significado que palabras paises otros mismo ingles español diferentes diferente con sql ruby-on-rails search solr sphinx

sql - que - palabras con dos significados en ingles



Busque palabras múltiples en varios modelos (1)

Recomiendo encarecidamente utilizar un motor de búsqueda adecuado para algo como esto, hará la vida mucho más fácil para usted. Tuve un problema similar y pensé "Muchacho, apuesto a que configurar algo así como Sphinx significa que primero tengo que leer miles de manuales y tutoriales". Bueno, ese no es el caso.

Thinking Sphinx es una joya de Rails que recomiendo, lo que hace que sea muy fácil integrar Sphinx. No necesita tener mucha experiencia para comenzar:

http://freelancing-god.github.com/ts/en/

No he probado otros motores de búsqueda, pero estoy muy satisfecho con Sphinx. Logré establecer una búsqueda relativamente compleja en tiempo real en menos de un día.

Intento crear una funcionalidad de búsqueda en un sitio, y quiero que el usuario pueda buscar palabras múltiples, realizando la coincidencia de subcadenas con los criterios que existen en varios modelos.

Por el bien de este ejemplo, digamos que tengo los siguientes modelos:

  • Empleado
  • Empresa
  • Municipio
  • Condado

Un condado tiene múltiples municipios, que tiene múltiples empresas, que tienen múltiples empleados.

Quiero que la búsqueda pueda buscar en una combinación de Employee.firstname, Employee.lastname, Company.name, Municipality.name y County.name, y quiero que el resultado final sean instancias de Employee.

Por ejemplo, una búsqueda de la cadena "joe tulsa" debe devolver todos los empleados donde ambas palabras se pueden encontrar en alguna parte de las propiedades que mencioné en la oración anterior. Obtendré algunos resultados positivos falsos, pero al menos debería obtener todos los empleados llamados "Joe" en el condado de Tulsa.

He intentado un par de enfoques, pero no estoy seguro de que vaya por el camino correcto. Estoy buscando una buena manera RoR-ish de hacer esto, y espero que alguien con más sabiduría RoR pueda ayudar a delinear una solución adecuada.

Lo que he intentado:

No tengo mucha experiencia con este tipo de búsqueda, pero fuera de RoR, crearía manualmente una declaración SQL para unir todas las tablas, crear cláusulas where para cada palabra de búsqueda por separado, cubriendo las diferentes tablas. Tal vez use un constructor. A continuación, ejecute la consulta y recorra los resultados, cree una instancia de los objetos de Employee de forma manual y agréguelos a una matriz.

Para resolver esto en RoR, he estado:

1) Incursionar con ámbitos nombrados en lo que en mi proyecto corresponde al modelo Empleado, pero me quedé atascado cuando necesité unirme en tablas a dos o más "pasos" de distancia (Municipio y Condado).

2) Creó una vista (llamada "búsqueda_vista") uniendo todas las tablas, para simplificar la consulta. Entonces pensé que usaría Employee.find_by_sql () en esta tabla, lo que me daría estos buenos objetos Employee. Pensé que usaría un generador para crear el SQL, y parecía que Arel era lo que usaba, así que intenté hacer algo como:

view = Arel::Table.new(:search_view)

Pero la Tabla Ariel resultante no contiene ninguna columna, por lo que no se puede construir mi consulta. En este punto, estoy un poco atascado ya que no sé cómo obtener un generador de consultas en funcionamiento.