Permettez-moi de clarifier cette affirmation. Pour les correspondances exactes, il n’est pas nécessaire de classer les résultats, car soit il y a une correspondance, soit il n’y en a pas. Pour les correspondances partielles, comment allons-nous décider lesquelles doivent être classées plus haut ?
- Ceci est mon terme de recherche
- Le terme de recherche est intéressant
- Le terme de recherche est plus intéressant ici car le titre est plus long
Tous les titres ci-dessus contiennent le terme de recherche, donc la question est : comment classer les résultats ? Actuellement, nous nous appuyons sur la fonction de classement de Postgres pour le déterminer.
Le classement tente de mesurer la pertinence des documents par rapport à une requête particulière, afin que, lorsqu’il y a de nombreuses correspondances, les plus pertinentes soient affichées en premier. PostgreSQL propose deux fonctions de classement prédéfinies qui prennent en compte des informations lexicales, de proximité et structurelles ; c’est-à-dire qu’elles considèrent la fréquence d’apparition des termes de la requête dans le document, la proximité de ces termes dans le document, et l’importance de la partie du document où ils apparaissent. Cependant, le concept de pertinence est vague et très spécifique à l’application. Différentes applications pourraient nécessiter des informations supplémentaires pour le classement, par exemple la date de modification du document. Les fonctions de classement intégrées ne sont que des exemples. Vous pouvez écrire vos propres fonctions de classement et/ou combiner leurs résultats avec d’autres facteurs pour répondre à vos besoins spécifiques.
Il existe de nombreux facteurs que Postgres prend en compte, mais en fin de compte, le classement reste quelque peu vague et dépend vraiment de site en site, selon la structure du contenu du forum. Notre objectif ici chez Discourse est de fournir une valeur par défaut efficace qui fonctionnera pour la plupart des forums existants.