11 Voto

MySQL: Ordenar por Relevancia

Pregunta de Progger99 | 01/05/2021 a las 13:56

Quiero ordenar una consulta de búsqueda para varias palabras de acuerdo con la relevancia, es decir: cuanto más palabras clave estén incluidas en el registro, más alto debería mostrarse el registro, porque tiene más relevancia.

Hasta ahora, mi consulta MySQL se ve así:

SELECT * FROM tab WHERE
  text LIKE 'palabra1' OR
  text LIKE 'palabra2' OR
  text LIKE 'palabra3'
LIMIT 10 ORDER BY ??

Pero, ¿qué viene después del ORDER BY? Espero que alguien pueda ayudarme. Por cierto, ¡no usaría una full text search!

ResponderPositivoNegativo
1Mejor Respuesta1 Voto

Una forma de implementar eso sin usar una búsqueda de full text sería tomar una consulta que se parezca a esto:

ORDER BY
  CASE WHEN text LIKE 'palabra1' THEN 1 ELSE 0 END
+ CASE WHEN text LIKE 'palabra2' THEN 1 ELSE 0 END
+ CASE WHEN text LIKE 'palabra3' THEN 1 ELSE 0 END
DESC

Por lo tanto, cada palabra coincidente conduce a un aumento de la clasificación al ordenar. Si las tres palabras aparecen en "text", obtenemos un rango de 3, mientras que la cantidad con una sola palabra coincidente es 1 y, por lo tanto, el registro correspondiente aparece más abajo.
01/05/2021 a las 19:54

ResponderPositivo Negativo
Responder

Temas Relacionados

MySQL: Saltos de Línea en MySQL

Consejo | 0 Comentarios

MySQL: SELECT 0 en lugar de NULL

Pregunta | 4 Respuestas

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.