Hai provato la ricerca testuale per vedere se non si è comportata correttamente? Funziona come previsto per me su 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" }
Perché "tempo" è nei terms
matrice nella spiegazione? Perché se la frase "on time"
ricorre in un documento, il termine time
deve anche. MongoDB utilizza l'indice di testo nella misura in cui può aiutare a individuare la frase e quindi controllerà i risultati dell'indice per vedere quale corrisponde effettivamente all'intera frase e non solo ai termini nella frase.