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.

¿Fue útil?

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
scroll top