Bạn đã thử tìm kiếm văn bản để xem nó có hoạt động không chính xác không? Nó hoạt động như mong đợi đối với tôi trên 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" }
Tại sao "thời gian" trong terms
mảng trong giải thích? Vì nếu cụm từ "on time"
xuất hiện trong một tài liệu, thuật ngữ time
cũng phải. MongoDB sử dụng chỉ mục văn bản trong phạm vi có thể để giúp định vị cụm từ và sau đó sẽ kiểm tra kết quả lập chỉ mục để xem cái nào thực sự khớp với cụm từ đầy đủ chứ không chỉ các thuật ngữ trong cụm từ.