MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

pencarian teks mongodb menggunakan berbagai bahasa

Tautan mati dari pertanyaan dan jawaban asli yang diberikan, tetapi ada cara untuk menentukan skema untuk ini yang didukung dalam versi modern.

Cara yang disarankan adalah dengan menyertakan "language" properti dalam dokumen atau dokumen yang disematkan di sebelah properti yang digunakan untuk indeks teks. Istilah "di sebelah" berarti pada "tingkat yang sama" dan tidak secara khusus berdekatan dengan properti dalam indeks.

Sesuatu yang umum akan terlihat seperti:

{
  "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"
    }
  ]
}

Dan kemudian menganggap bahwa kita menggunakan bahasa indeks teks "default" dari "bahasa Inggris" kita cukup mengindeks dengan:

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

MongoDB kemudian akan menggunakan "language" properti seperti yang ditunjukkan dalam dokumen "root" atau dari "dokumen yang disematkan" dalam array, dan jika dihilangkan, itu hanya akan menggunakan default yang ditentukan untuk indeks. Misalnya dokumen kedua di sini tidak memiliki properti bahasa di "root" jadi "english" dianggap sebagai default pada indeks.

Item yang diindeks tidak perlu dalam urutan apa pun, seperti yang juga ditunjukkan dengan memiliki "english" entri di dalam "translations" array dengan dokumen yang disematkan oleh dokumen sampel pertama. Aturan untuk item yang disematkan sedikit berbeda karena kita harus sertakan "language" properti pada dokumen yang disematkan atau bahasa sebenarnya yang digunakan adalah dari dokumen "root". Dalam contoh ini setiap dokumen yang disematkan dalam larik tanpa "language" properti akan dianggap menggunakan "spanish" karena itulah yang didefinisikan dalam "root".

Pencarian tentu saja semua dilakukan dengan mempertimbangkan semua jalur yang ada dalam indeks, jadi pada kedua "description" dan "translation.description" embedded yang disematkan properti seperti yang didefinisikan di sini. "Bahasa pencarian" yang sesuai masih selalu digunakan seperti yang ditentukan dengan $language pilihan ke $text operator, karena "stop words" dan "stemming" masih dipertimbangkan dalam kaitannya dengan ini dan bahasa indeks default ditetapkan pada pembuatan indeks.

Format yang disematkan juga memberi Anda titik mudah untuk mengambil informasi bahasa untuk "menerjemahkan" antara dua bahasa di mana Anda memiliki konten yang ditentukan untuk kedua bahasa tersebut, jadi kepraktisannya adalah "dua kali lipat" dalam kasus ini.

Dokumentasi spesifik sekarang terletak di Buat Indeks teks untuk Koleksi dalam Berbagai Bahasa sebagai bagian dalam topik yang lebih luas dari Tentukan Bahasa untuk Indeks Teks yang mencakup tautan ke semua detail lainnya, termasuk menentukan bahasa default yang berbeda pada indeks.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Id Mongo mengarah ke URL yang menakutkan

  2. Render tampilan HTML dasar?

  3. Menghubungkan ke database MongoDB

  4. MongoDB:Memperbarui dokumen menggunakan data dari dokumen yang sama

  5. Praktik Terbaik untuk Keamanan MongoDB