Kedua opsi indeks sangat berbeda.
-
Saat Anda membuat indeks reguler pada bidang string, indeks itu mengindeks seluruh nilai dalam string. Sebagian besar berguna untuk string kata tunggal (seperti nama pengguna untuk login) di mana Anda dapat mencocokkan dengan tepat.
-
Indeks teks di sisi lain akan menandai dan membendung konten bidang. Jadi itu akan memecah string menjadi kata-kata atau token individual, dan selanjutnya akan menguranginya menjadi batangnya sehingga varian dari kata yang sama akan cocok ("talk" cocok dengan "talks", "talked" dan "talking" misalnya, sebagai "talk" adalah batang dari ketiganya). Sangat berguna untuk teks yang benar (kalimat, paragraf, dll).
Penelusuran Teks
Pencarian teks mendukung pencarian konten string dalam dokumen koleksi. MongoDB menyediakan
$text
operator untuk melakukan pencarian teks dalam kueri dan dalam alur agregasi.Proses pencarian teks:
tokenizes and stems the search term(s) during both the index creation and the text command execution. assigns a score to each document that contains the search term in the indexed fields. The score determines the relevance of a document to a given search query.
$text
operator dapat mencari kata dan frasa. Kueri cocok dengan kata-kata bertangkai lengkap. Misalnya, jika bidang dokumen berisi kata blueberry, pencarian pada istilah biru tidak akan cocok dengan dokumen tersebut. Namun, pencarian pada blueberry atau blueberry akan cocok. -
$regex
pencarian dapat digunakan dengan indeks reguler pada bidang string, untuk menyediakan beberapa pencocokan pola dan pencarian wildcard. Bukan pengguna indeks yang sangat efektif tetapi akan menggunakan indeks di mana ia dapat:Jika ada indeks untuk bidang tersebut, maka MongoDB mencocokkan ekspresi reguler dengan nilai dalam indeks, yang bisa lebih cepat daripada pemindaian koleksi. Optimalisasi lebih lanjut dapat terjadi jika ekspresi reguler adalah "ekspresi awalan", yang berarti bahwa semua potensi pencocokan dimulai dengan string yang sama. Hal ini memungkinkan MongoDB untuk membuat "rentang" dari awalan itu dan hanya cocok dengan nilai-nilai dari indeks yang termasuk dalam rentang itu.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/