Tengo un pequeño problema (eso es lo que espero) al clasificar mis resultados de búsqueda de texto completo en la base de datos de MySQL. He tratado de escribir de dos maneras:Ranking de búsqueda de texto completo
forma natural:
SELECT SQL_CALC_FOUND_ROWS *,
MATCH(productname,keywords) AGAINST('$cl_search') AS score
FROM products
WHERE MATCH(productname,keywords) AGAINST('$cl_search')
ORDER BY score DESC,lastupdated DESC;
MANERA BOOLEANA:
SELECT SQL_CALC_FOUND_ROWS *,
((MATCH(productname) AGAINST('$cl_search' IN BOOLEAN MODE))+
(MATCH(keywords) AGAINST('\"$cl_search\"' IN BOOLEAN MODE))) AS score
FROM products
WHERE MATCH(productname,keywords) AGAINST('$cl_search')
ORDER BY score DESC,lastupdated DESC;
me gusta la indexación consigo cuando busco en el modo de lenguaje natural, pero ¿cómo puedo evitar que alguien entre, es decir, "bolso, bolsa, bolsa, bolsa" como nombre del producto para obtener buenos resultados de búsqueda?
Así que escribí la forma booleana de arreglar eso pero 1. es más lento y 2. No obtengo la otra indexación de relevancia como 'en comparación con el conteo de palabras'.
¿Alguna idea sobre cómo obtener lo mejor de ambos mundos?