Latest web development tutorials

pencarian teks lengkap MongoDB

Pembentukan indeks pencarian teks lengkap untuk setiap kata, yang menunjukkan jumlah dan lokasi dari kata tersebut muncul dalam artikel, jika permintaan pengguna, program pencarian akan dibentuk terlebih dahulu untuk menemukan indeks, dan hasil pencarian kembali ke metode pencarian pengguna.

Proses ini mirip dengan kata pencarian dengan proses pengambilan meja kamus kata.

MongoDB versi 2.4 dari awal untuk mendukung pencarian teks lengkap, saat ini mendukung 15 bahasa (sementara tidak mendukung Cina) indeks teks lengkap.

  • Denmark
  • Belanda
  • Inggris
  • Finlandia
  • Perancis
  • Jerman
  • Hongaria
  • Italia
  • norwegian
  • Portugis
  • Rumania
  • Rusia
  • Spanyol
  • Swedia
  • Turki

Aktifkan pencarian teks lengkap

Setelah MongoDB versi 2.6 diaktifkan oleh pencari default teks lengkap, jika Anda menggunakan versi sebelumnya, Anda perlu menggunakan kode berikut untuk mengaktifkan pencarian teks lengkap:

>db.adminCommand({setParameter:true,textSearchEnabled:true})

Atau gunakan perintah:

mongod --setParameter textSearchEnabled=true

Membuat indeks teks lengkap

Pertimbangkan hal berikut dokumen tulisan set data, termasuk isi dari artikel (POST_TEXT) dan label (tag):

{
   "post_text": "enjoy the mongodb articles on w3cschool.cc",
   "tags": [
      "mongodb",
      "w3cschool"
   ]
}

Kita dapat membangun indeks teks lengkap dari lapangan POST_TEXT, sehingga kita dapat mencari isi artikel:

>db.posts.ensureIndex({post_text:"text"})

Gunakan pengindeksan teks lengkap

Sekarang kami telah menetapkan indeks teks lengkap dari POST_TEXT, kita bisa mencari kata-kata kunci dalam artikel w3cschool.cc:

>db.posts.find({$text:{$search:"w3cschool.cc"}})

Perintah berikut mengembalikan data dokumen yang terdapat w3cschool.cc kata kunci berikut:

{ 
   "_id" : ObjectId("53493d14d852429c10000002"), 
   "post_text" : "enjoy the mongodb articles on w3cschool.cc", 
   "tags" : [ "mongodb", "w3cschool" ]
}
{
   "_id" : ObjectId("53493d1fd852429c10000003"), 
   "post_text" : "writing tutorials on w3cschool.cc",
   "tags" : [ "mongodb", "tutorial" ] 
}

Jika Anda menggunakan versi lama dari MongoDB, Anda dapat menggunakan perintah berikut:

>db.posts.runCommand("text",{search:" w3cschool.cc"})

Gunakan pengindeksan teks lengkap dapat meningkatkan efisiensi pencarian.


Hapus pengindeksan teks lengkap

Hapus indeks teks lengkap yang ada, Anda dapat menggunakan perintah find untuk menemukan nama indeks:

>db.posts.getIndexes()

Dapatkan nama indeks di atas perintah, dalam hal ini indeks bernama post_text_text, jalankan perintah berikut untuk menghapus indeks:

>db.posts.dropIndex("post_text_text")