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

tìm kiếm văn bản mongodb sử dụng nhiều ngôn ngữ

Các liên kết đã chết đối với cả câu hỏi và câu trả lời ban đầu được đưa ra, nhưng có một cách để xác định lược đồ cho điều này được hỗ trợ trong các phiên bản hiện đại.

Cách được đề xuất là bao gồm "language" thuộc tính trong tài liệu hoặc tài liệu nhúng bên cạnh thuộc tính đang được sử dụng cho chỉ mục văn bản. Thuật ngữ "bên cạnh" có nghĩa là ở "cùng cấp độ" và không liền kề cụ thể với sản phẩm trong chỉ mục.

Một cái gì đó phổ biến sẽ giống như sau:

{
  "description": "Texto largo en español",
  "language": "spanish",
  "translation": [
    {
      "description": "Large text in Spanish",
      "language": "english"
    },
    {
      "description": "Grand texte en espagnol",
      "language": "french"
    }
  ]
},
{
  "description": "The quick brown fox",
  "translation": [
    {
      "description": "Le renard brun rapide",
      "language": : "french"
    }
  ]
}

Và sau đó giả sử rằng chúng tôi sử dụng ngôn ngữ lập chỉ mục văn bản "mặc định" của "tiếng anh", chúng tôi có thể chỉ cần lập chỉ mục với:

db.collection.createIndex({ "description": "text", "translation.description": "text" })

MongoDB sau đó sẽ sử dụng "language" như được hiển thị trong tài liệu "root" hoặc từ "tài liệu nhúng" trong mảng và nếu bị bỏ qua nó sẽ chỉ sử dụng giá trị mặc định được xác định cho chỉ mục. Ví dụ:tài liệu thứ hai ở đây không có thuộc tính ngôn ngữ trên "root" nên "english" được giả định vì nó là mặc định trên chỉ mục.

Các mục được lập chỉ mục không cần theo bất kỳ thứ tự nào, cũng như được chứng minh bằng cách có "english" mục nhập bên trong "translations" mảng với các tài liệu được nhúng bởi tài liệu mẫu đầu tiên. Các quy tắc cho các mục được nhúng hơi khác ở chỗ chúng tôi phải bao gồm "language" thuộc tính trên tài liệu nhúng hoặc ngôn ngữ thực tế được sử dụng với từ "gốc" tài liệu. Trong ví dụ này, bất kỳ tài liệu nhúng nào trong mảng không có "language" thuộc tính sẽ được coi là đang sử dụng "spanish" vì đó là những gì được xác định trong "gốc".

Tất nhiên, tất cả các tìm kiếm đều được thực hiện dựa trên tất cả các đường dẫn có trong chỉ mục, vì vậy trên cả "description""translation.description" được nhúng các thuộc tính như được định nghĩa ở đây. "Ngôn ngữ tìm kiếm" thích hợp vẫn luôn được sử dụng như được chỉ định với $language tùy chọn cho $text toán tử, vì "từ dừng" và "gốc" vẫn được coi là liên quan đến điều này và ngôn ngữ lập chỉ mục mặc định được đặt khi tạo chỉ mục.

Định dạng nhúng cũng mang lại cho bạn một điểm dễ dàng để truy xuất thông tin ngôn ngữ để "dịch" giữa hai ngôn ngữ mà bạn đã xác định nội dung cho cả hai ngôn ngữ được đề cập, vì vậy tính thực tế là "gấp đôi" trong trường hợp này.

Tài liệu cụ thể hiện có tại Tạo chỉ mục văn bản cho Bộ sưu tập bằng nhiều ngôn ngữ như một phần trong chủ đề rộng hơn của Chỉ định ngôn ngữ cho chỉ mục văn bản, bao gồm các liên kết đến tất cả các chi tiết khác, bao gồm việc chỉ định ngôn ngữ mặc định khác trên chỉ mục.



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

  2. Cách sử dụng mongoimport để nhập csv

  3. Tránh cảnh báo phân tích cú pháp chuỗi URL hiện tại không được dùng nữa bằng cách đặt useNewUrlParser thành true

  4. Tra cứu MongoDB Dữ liệu Mùa xuân với Tổng hợp Đường ống

  5. Cách dừng mongo DB trong một lệnh