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

Tìm kiếm văn bản Mongodb nhiều trường

Khái niệm "tìm kiếm văn bản" trong mongodb không hoạt động như vậy. Thay vào đó, khái niệm ở đây là bạn xác định "nhiều trường" trong "chỉ mục văn bản" của bạn và chỉ cần tìm kiếm các thuật ngữ.

Giả sử bạn có "thứ" như thế này:

{ "_id" : ObjectId("55ba22294bde97b581332979"), "title" : "Hello there" },
{ "_id" : ObjectId("55ba22414bde97b58133297a"), "title" : "Hello world" },
{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne"
}

Sau đó, tôi quyết định tạo một chỉ mục văn bản như sau:

db.junk.createIndex(
   { "title": "text", "suburb": "text" },
   { "weights": {  "title": 10 } }
)

Sau đó, tôi thực hiện tìm kiếm bằng cách sử dụng $ text :

db.junk.find(
   { "$text": { "$search": "Hello World Melbourne" } },
   { "score": { "$meta": "textScore" } }
).sort({ "score": { "$meta": "textScore" } })

Điều này mang lại kết quả:

{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne",
    "score" : 11.5
},
{
    "_id" : ObjectId("55ba22414bde97b58133297a"),
    "title" : "Hello world",
    "score" : 1.5
},
{
    "_id" : ObjectId("55ba22294bde97b581332979"),
    "title" : "Hello there",
    "score" : 1
}

"Cả hai" nào tìm kiếm trên tất cả các trường được chỉ định trong chỉ mục và cũng xem xét "trọng số" bổ sung như được cung cấp cho trường "vùng ngoại ô" trong trường hợp này để làm cho nó trở thành một thứ hạng phổ biến hơn.

Vì vậy, bạn không sử dụng điều kiện bổ sung cho các cụm từ, bạn đặt "tất cả" các cụm từ trong chuỗi truy vấn văn bản "một" để tìm kiếm trên nhiều trường.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Phần mềm trung gian Mongoose pre.save () async không hoạt động như mong đợi

  2. TypeError:callback.apply không phải là một hàm sau allowDiskUse

  3. Làm thế nào để lưu trữ trang web trong NodeJS và MongoDB? Và chi phí sẽ là bao nhiêu?

  4. MongoDB tìm Tài liệu trong đó tất cả các phần tử mảng bằng một số giá trị

  5. Không thể khởi động MongoDB:Lỗi hệ thống 1067 trong Windows