Pourquoi ou comment FREETEXTTABLE donne-t-il une valeur de classement plus élevée que les autres?
-
03-07-2019 - |
Question
Il existe une procédure de stockage qui utilise FREETEXTTABLE deux fois sur deux tables, puis fusionne les résultats et renvoie le top 50.
Le problème est que si je fais une recherche sur "Women of Brewster", les résultats sont renvoyés "Confession d'un ex doofus motha". avec un rang de 143 du tableau A et deuxième "Women of Brewster Place" avec un rang de 102 du tableau B.
Est-ce à cause du compte? (Le total des résultats du tableau A est de 2399. Le total des résultats du tableau B est de 3445.)
La solution
La réponse courte:
Le classement Freetext est basé sur OKAPI Formule de classement BM25. Chaque terme du requête est classée, et les valeurs sont résumée. Les requêtes Freetext ajouteront mots à la requête via flexionnelle génération (formes à tige du termes de la requête d'origine); ces mots sont traité comme des termes séparés sans pondération spéciale ou relation avec les mots dont ils étaient généré. Synonymes générés à partir du Les thésaurus sont traités comme Termes séparés, de pondération égale.
La réponse beaucoup plus longue et bien plus compliquée peut être trouvée sur le site de Microsoft, bien sûr. Pour des mathématiques avancées, cliquez ici .
Autres conseils
1) Le fichier de bruit était limité à quelques caractères, ce qui signifie que le mot "of"; est maintenant considéré comme important.
2) Les résultats des deux tableaux (nombre) ont de l'importance, car le tableau le plus petit recevra probablement une meilleure valeur de pondération. Cela biaisera le rang pour être plus élevé dans un tableau plus petit.
Le lien de Josef avec MSDN a été très utile pour comprendre comment il calcule la valeur du rang.