Si vous avez besoin de calculer la similarité du texte sur le about
champ, une façon d'y parvenir est d'utiliser index de texte
.
Par exemple (dans le mongo
shell), si vous créez un index de texte sur le about
champ :
db.collection.createIndex({about: 'text'})
vous pouvez exécuter une requête telle que (exemple tiré de https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score ):
db.collection.find({$text: {$search: 'similarity in comparison'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
Avec vos exemples de documents, la requête devrait renvoyer quelque chose comme :
{
"_id": "foobar1",
"about": "similarity in comparison",
"score": 1.5
}
{
"_id": "foobar2",
"about": "perfect similarity in comparison",
"score": 1.3333333333333333
}
{
"_id": "foobar3",
"about": "partial similarity",
"score": 0.75
}
qui sont triés par score de similarité décroissant. Veuillez noter que contrairement à votre exemple de résultat, le document foobar4
n'est pas renvoyé car aucun des mots interrogés n'est présent dans foobar4
.
Les index de texte sont considérés comme un type spécial d'index dans MongoDB, et sont donc accompagnés de règles spécifiques sur son utilisation. Pour plus de détails, veuillez consulter :