mysql partido contra alternativo
Pregunta
Necesito una búsqueda con un algoritmo de relevancia y la base de datos es MySQL. Tengo que ordenar los resultados por fecha, palabra clave es si en el título o no, el número de apariciones de la palabra clave en el texto y así sucesivamente.
Partido contra no me da tanto control.
Solución
Algo como esto haría lo que quiere:
select
*
from
myTable
order by
sum
(
itemdate='2009-10-09',
title like '%keyword%',
text like '%keyword%',
criteria4,
criteria5
)
- Cada criterio devuelve 0 si es falso, y 1 si es verdadero.
- resumen de cada uno de los y el orden por el resultado.
- Las filas que tienen los criterios más adecuados a las respectivas estar en la cima.
Puede afinar todo esto, por supuesto, no sólo por tener 0 o 1 por criterios.
Otros consejos
select
*
from
myTable
order by
(
(itemdate='2009-10-09') +
(title like '%keyword%') +
(text like '%keyword%') +
(criteria4) +
(criteria5)
)
Esto funciona muy bien.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow