MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment trouver une similarité dans le champ de document MongoDB ?

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 :