PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL utilise-t-il tf-idf ?

Non. Dans la fonction ts_rank, il n'y a pas de méthode native pour classer les résultats en utilisant leur fréquence globale (corpus). L'algorithme de classement se classe cependant en fonction de la fréquence dans le document :

http://www.postgresql.org/docs/9.3/static /textsearch-controls.html

Ainsi, si je recherche "chien|chihuahua", les deux documents suivants auraient le même rang malgré la fréquence relativement plus faible du mot "chihuahua" :

"I want a dog"
"I want a chihuahua"

Cependant, la ligne suivante serait mieux classée que les deux lignes précédentes ci-dessus, car elle contient le jeton radical "chien" deux fois dans le document :

"dog lovers have an average of 1.5 dogs"

En bref :une fréquence de terme plus élevée dans le document entraîne un classement plus élevé, mais une fréquence de terme plus faible dans le corpus n'a aucun impact.

Une mise en garde :la recherche de texte ignore les mots vides, vous ne trouverez donc pas de correspondance avec des mots à fréquence ultra élevée comme "le", "un", "de", "pour", etc. (en supposant que vous avez correctement défini votre langue)