De acuerdo, estoy tratando de hacer una búsqueda de texto completo en varias columnas, algo simple como esto:
SELECT * FROM pages WHERE MATCH(head, body) AGAINST('some words' IN BOOLEAN MODE)
Ahora quiero ordenar por relevancia, (¿cuántas de las palabras se encuentran?) Que he podido hacer con algo como esto:
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY relevance
Ahora aquí viene la parte donde me pierdo, quiero priorizar la relevancia en la head
columna.
Supongo que podría hacer dos columnas de relevancia, una para head
y otra para body
, pero en ese momento estaría haciendo la misma búsqueda en la tabla tres veces, y para lo que hago esta función, el rendimiento es importante, ya que La consulta se combinará y comparará con otras tablas.
Entonces, mi pregunta principal es , ¿existe una forma más rápida de buscar relevancia y priorizar ciertas columnas? (¿Y como beneficio adicional, posiblemente incluso hacer que la relevancia cuente el número de veces que las palabras aparecen en las columnas?)
Cualquier sugerencia o consejo sería genial.
Nota: Ejecutaré esto en un servidor LAMP. (WAMP en pruebas locales)