2008-10-23 15 views
13

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:MySQL Resultado de búsqueda de texto completo Explicación

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 la puntuación que he visto resultados, para una consulta, entre 0,4667041301727-11,166275978088. Entiendo que es la idea de relevancia de MySQL (cuanto mayor sea el peso).

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

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

Solo espero algo de iluminación. Gracias.

Respuesta

6

En general, la relevancia se basa en la cantidad de coincidencias que cada fila tiene 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 él, puede encontrarlo en el internals manual.

+0

¿Puedo mostrar al cliente el valor 11.166275978088 como "relevancia 11%"? –

+0

que sería una mala idea ... no es precisa de esa manera ... no – johnnietheblack

9

Tome la consulta "word1 word2" como ejemplo.

El 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 Vector Space Model, que otra persona puede explicar detalladamente. :)

Cuestiones relacionadas