MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tìm kiếm văn bản MongoDB $ hoạt động như thế nào?

Tìm kiếm văn bản MongoDB sử dụng thư viện tạo gốc quả cầu tuyết để giảm các từ về dạng gốc dự kiến ​​(hoặc gốc ) dựa trên các quy tắc ngôn ngữ chung. Việc rút gọn thuật toán cung cấp khả năng rút gọn nhanh chóng, nhưng các ngôn ngữ có những ngoại lệ (chẳng hạn như các mẫu chia động từ bất quy tắc hoặc mâu thuẫn) có thể ảnh hưởng đến độ chính xác. Giới thiệu Snowball bao gồm tổng quan tốt về một số hạn chế của thuật toán gốc.

Ví dụ của bạn về walking bắt nguồn để walking và khớp như mong đợi.

Tuy nhiên, ví dụ của bạn về trekking bắt nguồn từ trekk vì vậy không khớp với từ khóa tìm kiếm của bạn về trek .

Bạn có thể xác nhận điều này bằng cách giải thích truy vấn của mình và xem lại parsedTextQuery thông tin hiển thị các cụm từ tìm kiếm gốc được sử dụng:

db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
​   "terms" : [
​       "trekk"
​   ],
​   "negatedTerms" : [ ],
​   "phrases" : [ ],
​   "negatedPhrases" : [ ]
}

Bạn cũng có thể kiểm tra việc bắt nguồn Snowball dự kiến ​​bằng cách sử dụng Demo Snowball trực tuyến hoặc bằng cách tìm thư viện Snowball cho ngôn ngữ lập trình ưa thích của bạn.

Để giải quyết các trường hợp ngoại lệ thường ảnh hưởng đến trường hợp sử dụng của bạn, bạn có thể xem xét thêm một trường khác vào chỉ mục văn bản của mình với các từ khóa để ảnh hưởng đến kết quả tìm kiếm. Đối với ví dụ này, bạn sẽ thêm trek dưới dạng từ khóa để sự kiện được mô tả là trekking cũng phù hợp trong kết quả tìm kiếm của bạn.

Có những cách tiếp cận khác để có được sự suy diễn chính xác hơn thường được gọi là lemmatization . Thuật toán bổ sung phức tạp hơn và bắt đầu đi vào miền xử lý ngôn ngữ tự nhiên . Có nhiều bộ công cụ nguồn mở (và thương mại) mà bạn có thể tận dụng nếu bạn muốn triển khai tìm kiếm văn bản nâng cao hơn trong ứng dụng của mình, nhưng những bộ công cụ này nằm ngoài phạm vi hiện tại của tính năng tìm kiếm văn bản MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ atan

  2. Làm cách nào để triển khai các quyền cấp trường cho MongoDB?

  3. MongoDB:Đang cập nhật subocument

  4. PyMongo tạo chỉ mục duy nhất với 2 trường trở lên

  5. Chèn hàng loạt (hàng loạt) không đồng bộ vào MySQL (hoặc MongoDB?) Qua Node.js