Por qué o cómo FREETEXTTABLE da un valor de rango más alto que otros
-
03-07-2019 - |
Pregunta
Hay un procedimiento de almacenamiento que usa FREETEXTTABLE dos veces en dos tablas y luego combina los resultados y devuelve los 50 principales.
El problema es si hago una búsqueda en '' Mujeres de Brewster '', los resultados devuelven '' Confesión de un ex doofus motha '' con un rango de 143 de la tabla A y segundo '' Women of Brewster Place '' con un rango de 102 de la tabla B.
¿Esto se debe al recuento? (El total de resultados de devolución de la Tabla A es 2399. El total de resultados de devolución de la Tabla B es 3445).
Solución
La respuesta corta:
La clasificación de texto libre se basa en OKAPI Fórmula de clasificación BM25. Cada término en el la consulta se clasifica y los valores son resumido Las consultas de texto libre agregarán palabras a la consulta por inflexión generación (formas derivadas de la términos de consulta originales); estas palabras son tratado como términos separados sin ponderación especial o relación con las palabras de las cuales eran generado. Sinónimos generados a partir de La función de diccionario de sinónimos se trata como términos separados, igualmente ponderados.
La respuesta mucho más larga y mucho más complicada se puede encontrar en el sitio de Microsoft, por supuesto. Para matemáticas avanzadas, haga clic aquí .
Otros consejos
1) El archivo de ruido se limitó a unos pocos caracteres, lo que significa que la palabra " de " Ahora se considera importante.
2) Los resultados de las dos tablas (conteo) son importantes, ya que la tabla más pequeña probablemente tendrá un mejor valor de peso. Esto sesgará el rango para ser más alto en una tabla más pequeña.
El enlace de Josef a MSDN fue excelente para descubrir cómo calcula el valor de rango.