DescriptionKami Baba Studio telah berdiri selama 17 tahun dengan 130 ribu murid dan alumni. Beberapa Pencapaian Baba Studio Show
Hasil yang didapat dari kursus iniDi Materi ini kamu akan mempelajari: Bab 1 : Penerapan MongoDB Bab 2 : Tipe - tipe data MongoDB Bab 3 : MongoDB Compass Bab 4 : Mengenal fungsi - fungsi yang ada pada MongoDB Bab 5 : Bekerja dengan Indexes Bab 6 : Pengimplementasikan MongoDB pada Node js Curriculum
MongoDB, salah satu database NoSQL terkemuka, terkenal dengan kinerja yang cepat, skema fleksibel, skalabilitas dan kemampuan pengindeksan yang bagus Inti dari pertunjukan cepat ini adalah MongoDB indeks, yang mendukung eksekusi kueri dengan efisien dengan menghindari pengumpulan penuh scan dan karenanya membatasi jumlah dokumen pencarian MongoDB. Mulai dari versi 2.4, MongoDB dimulai dengan fitur eksperimental yang mendukung Full-Text Search menggunakan Text Indexes. Fitur ini ada sekarang menjadi bagian integral dari produk (dan bukan lagi fitur eksperimental). Pada artikel ini kita akan mengeksplorasi fungsi full-text search MongoDB langsung dari fundamental. Jika Anda baru mengenal MongoDB, saya sarankan Anda membaca artikel berikut di Envato Tuts+ yang akan membantu Anda memahami konsep dasar dari MongoDB:
DasarSebelum kita membahasnya, mari kita lihat beberapa latar belakang. Full-text search mengacu pada teknik full-text database lengkap terhadap kriteria pencarian yang ditentukan oleh pengguna. Ini adalah sesuatu yang mirip dengan cara kami mencari konten di Google (atau dalam faktanya aplikasi pencarian lainnya) dengan memasukkan kata kunci / frase string tertentu dan mengembalikan hasil yang relevan diurutkan berdasarkan rangkingnya. Disini adalah beberapa skenario lagi di mana kita akan melihat full-text search yang terjadi:
Sebelum kita melanjutkan, ada beberapa istilah umum yang terkait dengan full-text search yang harus Anda ketahui. Persyaratan ini berlaku untuk implementasi full-text search (dan bukan spesifik MongoDB). Stop WordStop Words adalah kata-kata yang tidak relevan yang harus disaring dari teks. Misalnya: a, an, the, is, at, which, dll. StemmingStemming adalah proses mengurangi kata-kata pada batangnya. Misalnya: kata-kata seperti berdiri, berdiri, berdiri, dll memiliki basis dasar yang sama. ScoringPeringkat relatif untuk mengukur hasil pencarian mana yang paling relevan. Alternatif untuk Full-Text Search di MongoDBSebelum MongoDB mengemukakan konsep indeks teks, kita akan memodelkan data kami untuk mendukung keyword search atau menggunakan untuk menerapkan fungsi pencarian fungsi pencarian tersebut. Namun, dengan menggunakan salah satu pendekatan ini memiliki keterbatasan sendiri:
Terlepas dari pendekatan ini, untuk aplikasi sentris search yang lebih maju dan kompleks ada solusi alternatif seperti Elastic Search atau SOLR. Tapi menggunakan salah satu dari solusi ini meningkatkan kompleksitas aplikasi arsitektur, karena MongoDB sekarang harus berbicara dengan database eksternal tambahan. Perhatikan bahwa full-text search MongoDB tidak diusulkan sebagai penggantian lengkap database mesin pencari seperti Elastic, SOLR, dll. Namun, aplikasi ini dapat digunakan secara efektif untuk sebagian besar aplikasi yang dibangun dengan MongoDB hari ini. Memperkenalkan MongoDB Pencarian TeksDengan menggunakan full-text search MongoDB, Anda dapat menentukan indeks teks pada bidang apa pun dalam dokumen yang nilainya berupa string atau array. Saat kami membuat indeks teks di lapangan, MongoDB memberi tokenizes dan memunculkan konten teks bidang yang diindeks, dan membuat indeks sesuai dengan itu. Untuk memahami hal-hal lebih jauh, marilah kita menyelami beberapa praktek langsung. Saya ingin Anda mengikuti tutorial dengan saya dengan mencoba contoh di mongo shell. Kita pertama-tama akan membuat beberapa data sampel yang akan kita gunakan sepanjang artikel, dan kemudian kami akan melanjutkan untuk membahas konsep utama. Untuk tujuan artikel ini, pertimbangkan kumpulan {
26 yang menyimpan dokumen dengan struktur sebagai berikut:1 {
2 "subject":"Joe owns a dog", 3 "content":"Dogs are man's best friend", 4 "likes": 60, 5 "year":2015, {
0{
1{
2{
3Mari kita masukkan beberapa contoh dokumen menggunakan perintah {
27 untuk membuat data pengujian kita:1 {
52 3 {
84 5 21 {
0{
224 Membuat Indeks TextSebuah indeks teks dibuat sangat mirip dengan bagaimana kita membuat indeks reguler, kecuali bahwa ia menentukan kata kunci {
28 daripada menentukan urutan naik / menurun.Mengindeks Bidang TunggalBuat indeks teks pada bidang {
29 dokumen kita dengan menggunakan kueri berikut:1 26 Untuk menguji indeks teks yang baru dibuat ini di bidang {
29, kami akan mencari dokumen menggunakan {
31 operator. Kami akan mencari semua dokumen yang memiliki kata kunci {
32 di bidang {
29 mereka.Karena kita menjalankan pencarian teks, kita juga tertarik untuk mendapatkan beberapa statistik tentang seberapa relevan dokumen yang dihasilkan. Untuk tujuan ini, kita akan menggunakan {
34, yang memberikan informasi tentang pemrosesan {
31 operator. Kita juga akan mengurutkan dokumen dengan {
36 mereka menggunakan perintah {
37. {
36 yang lebih tinggi menunjukkan kecocokan yang lebih relevan.1 28 Permintaan di atas mengembalikan dokumen berikut yang berisi kata kunci {
32 di bidang {
29 mereka.1 "subject":"Joe owns a dog",0 2 3 "subject":"Joe owns a dog",3 Seperti yang bisa Anda lihat, dokumen pertama memiliki skor 1 (karena kata kunci {
41 muncul dua kali dalam subjeknya) dibandingkan dengan dokumen kedua dengan skor 0,66. Kueri juga telah memilah dokumen yang dikembalikan dalam urutan skor mereka.Satu pertanyaan yang mungkin muncul di benak Anda adalah jika kita mencari kata kunci {
32, mengapa mesin pencari menggunakan kata kunci {
41 (tanpa 's')? Ingat diskusi kami tentang stemming, di mana kata kunci pencarian dikurangi ke basis mereka? Inilah alasan mengapa {
32 kata kunci direduksi menjadi {
41.Pengindeksan Beberapa Bidang (Compound Indexing)Lebih sering daripada tidak, Anda akan menggunakan pencarian teks di berbagai bidang dokumen. Dalam contoh kita, kita akan mengaktifkan pengindeksan teks gabungan pada bidang {
29 dan {
47. Silakan jalankan perintah berikut di shell mongo:1 "subject":"Joe owns a dog",5 Apakah ini bekerja? Tidak!! Membuat indeks teks kedua akan memberi Anda pesan kesalahan yang mengatakan bahwa indeks pencarian teks lengkap sudah ada. Kenapa gitu? Jawabannya adalah bahwa indeks teks hanya memiliki satu indeks teks per koleksi. Oleh karena jika Anda ingin membuat indeks teks lain, Anda harus memasukkan yang sudah ada dan menciptakan yang baru. 1 "subject":"Joe owns a dog",7 2 "subject":"Joe owns a dog",5 Setelah mengeksekusi kueri pembuatan indeks di atas, coba cari semua dokumen dengan kata kunci {
48.1 31 Permintaan di atas akan menampilkan dokumen berikut: 1 33 2 3 36 Anda dapat melihat bahwa nilai dokumen pertama, yang berisi kata kunci {
48 di bidang {
29 dan {
47, lebih tinggi.Mengindekskan Seluruh Dokumen (Wildcard Indexing)Pada contoh terakhir, kita menempatkan indeks gabungan pada bidang {
29 dan {
47. Tapi ada skenario di mana Anda ingin konten teks dalam dokumen Anda dapat dicari.Misalnya, pertimbangkan untuk menyimpan email dalam dokumen MongoDB. Dalam kasus email, semua bidang, termasuk Pengirim, Penerima, Subjek dan Badan, perlu dapat dicari. Dalam skenario seperti itu Anda dapat mengindeks semua bidang string dokumen Anda menggunakan specifier wildcard {
54.Kueri akan berjalan seperti ini (pastikan Anda menghapus indeks yang ada sebelum membuat yang baru): 1 38 Kueri ini akan secara otomatis mengatur indeks teks pada setiap bidang string di dokumen kami. Untuk menguji ini, masukkan dokumen baru dengan {
55 bidang baru di dalamnya:1 "content":"Dogs are man's best friend",0 Sekarang jika Anda mencoba pencarian teks dengan kata kunci {
56 (query di bawah), maka akan mengembalikan dokumen yang baru saja kita masukkan.1 "content":"Dogs are man's best friend",2 Beberapa hal yang ingin saya fokuskan di sini:
Pencarian Tingkat LanjutPencarian FraseAnda bisa mencari ungkapan seperti "smart birds who love cooking" dengan menggunakan indeks teks. Secara default, pencarian frase membuat pencarian OR pada semua kata kunci yang ditentukan, yaitu akan mencari dokumen yang berisi kata kunci {
59, {
60, {
61 atau {
62.1 "content":"Dogs are man's best friend",4 Kueri ini akan menampilkan dokumen-dokumen berikut: 1 "content":"Dogs are man's best friend",6 2 3 "content":"Dogs are man's best friend",9 Jika Anda ingin melakukan pencarian frase yang tepat (logika AND), Anda dapat melakukannya dengan menentukan tanda kutip ganda di teks pencarian. 1 41 Kueri ini akan menghasilkan dokumen berikut, yang berisi ungkapan "cook food" bersama: 1 43 Pencarian NegasiMengawali kata kunci pencarian dengan {
63 (tanda minus) mengecualikan semua dokumen yang mengandung istilah yang dinegasikan. Misalnya, coba cari dokumen yang berisi kata kunci {
64 namun tidak berisi {
65 menggunakan kueri berikut:1 45 Melihat di Balik LayarSalah satu fungsi penting yang tidak saya ungkapkan sampai sekarang adalah bagaimana Anda melihat di balik layar dan melihat bagaimana kata kunci pencarian Anda stemmed, stop word yang diaplikasikan, negasi, dll. {
66 untuk diamankan. Anda bisa menjalankan query yang dijelaskan dengan {
67 sebagai parameternya, yang akan memberi Anda statistik terperinci pada eksekusi kueri.1 47 Jika Anda melihat objek {
68 yang dikembalikan oleh perintah penjelasan, Anda akan dapat melihat bagaimana MongoDB mengurai string pencarian yang diberikan. Amati bahwa hal itu mengabaikan stop word seperti {
69, dan stemmed {
32 ke {
41.Anda juga dapat melihat istilah yang kita abaikan dari penelusuran dan frasa yang kita gunakan di bagian {
72 .1 49 2 "likes": 60,1 3 "likes": 60,3 4 "likes": 60,5 5 "likes": 60,7 {
0"likes": 60,9 {
251 52 53 54 "likes": 60,3 56 57 58 59 "year":2015,0 "year":2015,1 "year":2015,2 "year":2015,3 "year":2015,4 59 "year":2015,6 "year":2015,7 "year":2015,8 "year":2015,9 {
0059 {
02{
03{
04{
05Explain query akan sangat berguna saat kita melakukan kueri penelusuran yang lebih rumit dan ingin menganalisisnya. Penelusuran Teks TertimbangBila kita memiliki indeks pada lebih dari satu bidang dalam dokumen kita, sebagian besar waktu satu bidang akan lebih penting (yaitu lebih berat) daripada yang lain. Misalnya, ketika Anda mencari di sebuah blog, judul blog harus memiliki bobot tertinggi, diikuti oleh konten blog. Bobot default untuk setiap bidang yang diindeks adalah 1. Untuk menetapkan bobot relatif untuk bidang yang diindeks, Anda dapat memasukkan opsi {
73 saat menggunakan perintah {
74 .Mari kita pahami ini dengan sebuah contoh. Jika Anda mencoba mencari kata kunci {
62 dengan indeks kita saat ini, maka akan menghasilkan dua dokumen, keduanya memiliki skor yang sama.1 {
071 {
092 3 "content":"Dogs are man's best friend",9 Sekarang mari kita ubah indeks kita untuk memasukkan bobot; dengan bidang {
29 memiliki berat 3 terhadap bidang {
47 yang memiliki berat 1.1 {
14Coba cari kata kunci {
62 sekarang, dan Anda akan melihat bahwa dokumen yang berisi kata kunci ini di bidang {
29 memiliki skor lebih besar (dari 2) daripada yang lain (yang memiliki 0,66).1 "content":"Dogs are man's best friend",6 2 3 "content":"Dogs are man's best friend",9 Partisi Teks IndeksSeiring data yang tersimpan dalam aplikasi Anda tumbuh, ukuran indeks teks Anda terus berkembang juga. Dengan peningkatan ukuran indeks teks ini, MongoDB harus mencari semua entri yang diindeks setiap kali pencarian teks dilakukan. Sebagai teknik untuk menjaga pencarian teks Anda tetap efisien dengan indeks yang berkembang, Anda dapat membatasi jumlah entri indeks hasil pindaian dengan menggunakan kondisi kesetaraan dengan pencarian reguler {
31. Contoh yang sangat umum dari ini adalah mencari semua tulisan yang dibuat selama tahun / bulan tertentu, atau mencari semua posting dengan kategori / tag tertentu.Jika Anda mengamati dokumen yang sedang kami tangani, kita memiliki bidang {
81 di dalamnya yang belum pernah kita gunakan. Skenario yang umum adalah mencari pesan dari tahun ke tahun, bersamaan dengan full-text search yang telah kita pelajari.Untuk ini, kita dapat membuat indeks gabungan yang menentukan sebuah kunci indeks ascending / descending pada {
81 diikuti oleh indeks teks pada bidang {
29. Dengan melakukan ini, kita melakukan dua hal penting:
Jatuhkan indeks yang sudah Anda miliki dan buat indeks senyawa baru pada ( {
81, {
29):1 {
21Sekarang jalankan query berikut untuk mencari semua pesan yang dibuat pada tahun 2015 dan berisi kata kunci {
86:1 {
23Permintaan akan mengembalikan hanya satu dokumen yang sesuai seperti yang diharapkan. Jika Anda {
87 kueri ini dan melihat {
88, Anda akan mendapati bahwa {
89 untuk kueri ini adalah 1, yang menegaskan bahwa indeks baru kita dapat dimanfaatkan dengan benar dan MongoDB hanya memindai satu dokumen sementara dengan aman mengabaikan semua dokumen lain yang tidak jatuh di bawah tahun 2015Indeks Teks: ManfaatApa Lagi yang Dapat Dilakukan Indeks Teks?Kita telah menempuh perjalanan panjang dalam artikel ini untuk belajar tentang indeks teks. Ada banyak konsep lain yang dapat Anda eksperimen dengan indeks teks. Tapi karena cakupan artikel ini, kita tidak akan bisa membahasnya secara rinci hari ini. Namun demikian, mari kita lihat secara singkat apa fungsi ini:
Pengindeksan Teks MongoDB vs. Database Pencarian EksternalMengingat fakta bahwa full-text search MongoDB bukanlah pengganti lengkap untuk database mesin pencari tradisional yang digunakan bersama MongoDB, dengan menggunakan fungsi MongoDB asli disarankan karena alasan berikut:
Indeks Teks: KekuranganFull-text search merupakan fitur yang relatif baru di MongoDB, ada beberapa fungsi yang memiliki kekurangan saat ini. Saya akan membagi mereka menjadi tiga kategori. Mari kita lihat. Fungsionalitas yang Hilang Dari Pencarian Teks
Batasan di Fungsionalitas Saat Ini
Kerugian Kinerja
KesimpulanPencarian teks lengkap selalu menjadi salah satu fitur yang paling dituntut dari MongoDB. Pada artikel ini, kita memulai dengan pengenalan full-text search, sebelum beralih ke dasar-dasar pembuatan indeks teks. Kita kemudian mengeksplorasi pengindeksan compound, pengindeksan wildcard, pencarian frase dan pencarian negasi. Selanjutnya, kita mengeksplorasi beberapa konsep penting seperti menganalisis indeks teks, pencarian tertimbang, dan membagi partisi secara logis. Kita dapat mengharapkan beberapa pembaruan utama pada pembaruan utama pada fungsi ini dalam rilis MongoDB yang akan datang. Saya Merekomendasikan sebaiknya Anda memberi teks-search untuk dicoba dan berbagi pemikiran Anda. Jika Anda telah menerapkannya di aplikasi Anda, silakan berbagi pengalaman Anda di sini. Akhirnya, jangan ragu untuk memposting pertanyaan, pemikiran dan saran Anda di artikel ini di bagian komentar. MongoDB digunakan untuk apa?3. Cocok Untuk Menampung Data yang Bervariasi
Dynamic schema membuat MongoDB cocok untuk menampung data yang bervariasi baik digunakan untuk menyimpan data yang terstruktur ataupun yang tidak terstruktur.
MongoDB menggunakan bahasa apa?MongoDB sendiri ditulis dengan bahasa C++ dan telah tersedia untuk berbagai jenis bahasa pemrograman. Fitur utama dari mongoDB antara lain: model document-oriented storage.
Apa itu Collection di MongoDB?Collection MongoDb adalah tempat kumpulan informasi data yang berbentuk dokumen. Collection dipadankan seperti tabel-tabel yang berisi data pada database SQL. Document MongoDb adalah satuan unit terkecil dalam MongoDB.
Apakah MongoDB termasuk database?MongoDB adalah salah satu jenis database NoSQL yang cukup populer digunakan dalam pengembangan website. Berbeda dengan database jenis SQL yang menyimpan data menggunakan relasi tabel, MongoDB menggunakan dokumen dengan format JSON. Hal inilah yang dianggap membuat pengelolaan data menggunakan MongoDB lebih baik.
|