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

Recherche plein texte MongoDB - mots correspondants et expressions exactes

Avez-vous essayé la recherche de texte pour voir si elle ne s'est pas comportée correctement ? Cela fonctionne comme prévu pour moi sur MongoDB 2.6.7 :

> db.test.drop()
> db.test.insert({ "t" : "I'm on time, not late or delayed" })
> db.test.insert({ "t" : "I'm either late or delayed" })
> db.test.insert({ "t" : "Time flies like a banana" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.find({ "$text" : { "$search" : "time late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "Time flies like a banana" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay \"on time\"" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }

Pourquoi le "temps" figure-t-il dans les terms ? tableau dans l'explication? Parce que si l'expression "on time" apparaît dans un document, le terme time doit également. MongoDB utilise l'index de texte dans la mesure du possible pour aider à localiser la phrase, puis vérifie les résultats de l'index pour voir qui correspond réellement à la phrase complète et pas seulement aux termes de la phrase.