soporta segundo por optimizar lentas funciones español cuantas consultas busquedas biblia mysql full-text-search

segundo - Explicación de la búsqueda de texto completo de MySQL



manual mysql 5.7 español pdf (2)

He estado experimentando con la búsqueda de texto completo últimamente y tengo curiosidad sobre el significado del valor de Puntuación. Por ejemplo, tengo la siguiente consulta:

SELECT table. * , MATCH ( col1, col2, col3 ) AGAINST ( ''+(Term1) +(Term1)'' ) AS Score FROM table WHERE MATCH ( col1, col2, col3 ) AGAINST ( ''+(Term1) +(Term1)'' )

En los resultados de Score, he visto resultados, para una consulta, entre 0.4667041301727 a 11.166275978088. Entiendo que es la idea de relevancia de MySQL (cuanto mayor sea el peso).

Lo que no entiendo es cómo MySQL logra ese puntaje. ¿Por qué el número no se devuelve como un decimal o algo más?

¿Por qué si ejecuto una consulta "IN BOOLEAN MODE", la puntuación siempre devuelve un 1 o un 0? ¿No serían todos los resultados un 1?

Solo esperando algo de iluminación. Gracias.


En general, la relevancia se basa en la cantidad de coincidencias que tiene cada fila con las palabras asignadas a la búsqueda. El valor exacto dependerá de muchas cosas, pero realmente solo importa para comparar con otros valores de relevancia en la misma consulta.

Si realmente quiere los cálculos matemáticos detrás de esto, puede encontrarlo en el manual interno .


Tome la consulta "word1 word2" como un ejemplo.

Modo BOOLEAN indica que toda su consulta coincide con el documento (por ejemplo, contiene tanto word1 como word2). El modo booleano es una coincidencia estricta.

La fórmula normalmente utilizada se basa en el Modelo de espacio vectorial de búsqueda. Muy simplificado, se da cuenta de dos medidas para determinar qué tan importante es una palabra para una consulta. El término frecuencia (términos que ocurren a menudo en un documento son más importantes que otros términos) y la frecuencia inversa del documento (un término que aparece en muchos documentos es ponderado más bajo que un término que aparece en pocos documentos). Esto se conoce como tf-idf , y se usa como base para el modelo de espacio vectorial. Estos puntajes forman la base para el modelo de espacio vectorial , que otra persona puede explicar a fondo. :)