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.