Hai tùy chọn chỉ mục rất khác nhau.
-
Khi bạn tạo một chỉ mục thông thường trên một trường chuỗi, nó sẽ lập chỉ mục giá trị dòng trong chuỗi. Hầu hết hữu ích cho các chuỗi từ đơn lẻ (như tên người dùng để đăng nhập) nơi bạn có thể đối sánh chính xác.
-
Mặt khác, một chỉ mục văn bản sẽ mã hóa và xuất phát nội dung của trường. Vì vậy, nó sẽ chia chuỗi thành các mã từ riêng lẻ và sẽ tiếp tục giảm chúng xuống gốc của chúng để biến thể của cùng một từ sẽ khớp (ví dụ:"nói chuyện" khớp với "cuộc nói chuyện", "nói chuyện" và "nói chuyện", chẳng hạn như "nói chuyện" là một gốc của cả ba). Hầu hết hữu ích cho văn bản thực (câu, đoạn văn, v.v.).
Tìm kiếm văn bản
Tìm kiếm văn bản hỗ trợ tìm kiếm nội dung chuỗi trong tài liệu của bộ sưu tập. MongoDB cung cấp
$text
toán tử để thực hiện các truy vấn tìm kiếm văn bản và trong các đường ống tổng hợp.Quá trình tìm kiếm văn bản:
tokenizes and stems the search term(s) during both the index creation and the text command execution. assigns a score to each document that contains the search term in the indexed fields. The score determines the relevance of a document to a given search query.
$text
nhà điều hành có thể tìm kiếm các từ và cụm từ. Truy vấn đối sánh với các từ gốc hoàn chỉnh. Ví dụ:nếu một trường tài liệu chứa từ blueberry, một tìm kiếm về từ blue sẽ không khớp với tài liệu. Tuy nhiên, tìm kiếm về quả việt quất hoặc quả việt quất sẽ phù hợp. -
$regex
tìm kiếm có thể được sử dụng với các chỉ mục thông thường trên các trường chuỗi, cung cấp một số đối sánh mẫu và tìm kiếm theo ký tự đại diện. Không phải là người sử dụng chỉ mục quá hiệu quả nhưng nó sẽ sử dụng chỉ mục ở những nơi có thể:Nếu tồn tại một chỉ mục cho trường, thì MongoDB sẽ đối sánh biểu thức chính quy với các giá trị trong chỉ mục, có thể nhanh hơn quét acollection. Tối ưu hóa hơn nữa có thể xảy ra nếu biểu thức chính quy là một "biểu thức tiền tố", có nghĩa là tất cả các đối sánh tiềm năng bắt đầu bằng cùng một chuỗi. Điều này cho phép MongoDB tạo một "phạm vi" từ tiền tố đó và chỉ khớp với các giá trị từ chỉ mục nằm trong phạm vi đó.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/