Har du prøvet tekstsøgningen for at se, om den ikke opførte sig korrekt? Det fungerer som forventet for mig på 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" }
Hvorfor er "tid" i terms
række i forklare? Fordi hvis sætningen "on time"
forekommer i et dokument, udtrykket time
skal også. MongoDB bruger tekstindekset i det omfang det kan til at hjælpe med at finde sætningen og vil derefter tjekke indeksresultaterne for at se, hvilke der faktisk matcher hele sætningen og ikke kun termerne i sætningen.