TABLA 'productos'
Código:
TABLA 'keywords'ID NOMBRE 1 Apple Macbook Pro 2 Apple Macbook 3 Apple iPod 4 Dell XPS M1330
Código:
Bien, creo que la idea es bastante sencilla e intuitiva. Ahora supongamos que un usuario quiere buscar "Apple Macbook Pro". Lo que quiero hacer es mostrar los resultados de los productos por coincidencia con el NÚMERO (el orden da igual) de keywords, de mayor a menor. Y así, como resultado de la anterior búsqueda los productos serían, por orden:KEYWORD ID_PRODUCTO Apple 1 Apple 2 Apple 3 Macbook 1 Macbook 2 Pro 1 iPod 3 Dell 4 XPS 4 M1330 4
1 Apple Macbook Pro
2 Apple Macbook
3 Apple iPod
Ya que los tres productos tienen la palabra "Apple" el segundo tiene además la palabra "Macbook" y el primero las tiene todas.
Si buscase "Apple iPod" el resultado sería:
3 Apple iPod
2 Apple Macbook
1 Apple Macbook Pro
Aquí el segundo y tercer puestos pueden intercambiarse, porque ambos sólo tienen una coincidencia ["Apple"] con la búsqueda. Creo que se entiende bien.
Mi pregunta es, ¿cómo puedo hacer esto con una consulta MySQL? Me vale cualquier lenguaje de bases de datos (y por eso lo pongo en este foro), ya que sé un poco de todos y lo podría adaptar fácilmente a MySQL.
He probado a hacer un LEFT JOIN por cada palabra clave de búsqueda y luego ordenándolos por número de keywords en los resultados, pero esto no me sirve porque se da prioridad a los resultados de la primera tabla, y si una persona introduce la búsqueda "Ordenador Apple Macbook" no se devuelve ningún resultado, ya que "Ordenador" es una palabra "intrusa". Y por supuesto, también se dan problemas cuando las palabras no son intruducidas en el orden determinado.
¿Alguien sabe cómo hacer lo que quiero?
Gracias.
PD: lo que he puesto es sólo un ejemplo, pero imaginarios una tabla con decenas de miles de productos, cada uno más de media docena de palabras clave. El tiempo de búsqueda puede ser inviable.