MongoDB $text
tìm kiếm không hỗ trợ đối sánh từng phần. MongoDB cho phép các truy vấn tìm kiếm văn bản trên nội dung chuỗi với hỗ trợ phân biệt chữ hoa chữ thường, dấu phân cách, ngắt từ và viết gốc. Và các cụm từ trong chuỗi tìm kiếm của bạn, theo mặc định, OR'ed.
Lấy từng ví dụ (rất hữu ích :) của bạn:
THỜI HẠN DUY NHẤT, MỘT PHẦN
// returns nothing because there is no world word with the value `Crai` in your
// text index and there is no whole word for which `Crai` is a recognised stem
db.submissions.find({"$text":{"$search":"\"Crai\""}})
NHIỀU ĐIỀU KHOẢN, HÃY HOÀN THÀNH
// returns the document because it contains all of these words
// note in the text index Dr. Bob is not a single entry since "." is a delimiter
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
NHIỀU ĐIỀU KHOẢN, MỘT BÊN
// returns the document because it contains the whole word "Craig" and it
// contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
ĐIỀU KHOẢN NHIỀU ĐIỀU KHOẢN, CẢ HAI BÊN
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Hãy nhớ rằng $search
chuỗi là ...
Vì vậy, nếu có ít nhất một cụm từ trong $search
của bạn chuỗi khớp thì MongoDB khớp với tài liệu đó.
Để xác minh hành vi này, nếu bạn chỉnh sửa tài liệu của mình thay đổi Dr. Bob
tới DrBob
thì các truy vấn sau sẽ trả về không tài liệu:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Giờ đây, những thứ này không trả về kết quả phù hợp vì Dr
không còn là toàn bộ từ trong chỉ mục văn bản của bạn vì nó không được theo sau bởi .
dấu phân cách.