Carian teks penuh MongoDB
Carian teks penuh mencipta indeks untuk setiap perkataan, menunjukkan nombor dan lokasi perkataan dalam artikel Apabila pengguna bertanya, program carian akan mencari berdasarkan indeks yang telah ditetapkan dan akan mencari Hasilnya disalurkan semula kepada kaedah carian pengguna.
Proses ini sama dengan proses mencari perkataan melalui senarai perkataan carian dalam kamus.
MongoDB menyokong carian teks penuh bermula dari versi 2.4, dan pada masa ini menyokong pengindeksan teks penuh dalam 15 bahasa (Bahasa Cina tidak disokong buat masa ini).
danish
belanda
bahasa Inggeris
finland
perancis
jerman
hungarian
-
Itali
norwegia
Portugis
Romania
rusia
sepanyol
sweden
turki
Dayakan carian teks penuh
MongoDB mendayakan carian teks penuh secara lalai selepas versi 2.6 Jika anda menggunakan versi sebelumnya, anda perlu menggunakan kod berikut untuk mendayakan penuh -carian teks:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
Atau gunakan arahan:
mongod --setParameter textSearchEnabled=true
Buat indeks teks penuh
Pertimbangkan data dokumen koleksi catatan berikut, yang termasuk kandungan artikel (post_text) dan tag:
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
Kita boleh mencipta indeks teks penuh pada medan post_text supaya kita boleh mencari kandungan dalam artikel:
>db.posts.ensureIndex({post_text:"text"})
Gunakan penuh -text index
Sekarang kami telah mencipta indeks teks penuh pada medan post_text Indeks teks penuh, kami boleh mencari kata kunci w3cschool.cc dalam artikel:
>db.posts.find({$text:{$search:"w3cschool.cc"}})
Arahan berikut kembali data dokumen berikut yang mengandungi kata kunci w3cschool.cc:
{ "_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 MongoDB, anda boleh menggunakan arahan berikut:
>db.posts.runCommand("text",{search:" w3cschool.cc"})
Menggunakan indeks teks penuh boleh meningkatkan carian kecekapan.
Padam indeks teks penuh
Padam indeks teks penuh sedia ada Anda boleh menggunakan arahan find untuk mencari nama indeks:
>db.posts.getIndexes()
Dapatkan indeks. nama melalui arahan di atas, dalam contoh ini Nama indeks ialah post_text_text Jalankan arahan berikut untuk memadam indeks:
>db.posts.dropIndex("post_text_text")