Penelusuran teks MongoDB menggunakan library stemming Snowball untuk mengurangi kata menjadi bentuk akar yang diharapkan (atau batang ) berdasarkan aturan bahasa umum. Stemming algoritmik memberikan pengurangan cepat, tetapi bahasa memiliki pengecualian (seperti pola konjugasi kata kerja yang tidak teratur atau bertentangan) yang dapat mempengaruhi akurasi. Pengantar bola salju mencakup ikhtisar yang baik tentang beberapa keterbatasan stemming algoritmik.
Contoh Anda walking
berasal dari walking
dan cocok seperti yang diharapkan.
Namun, contoh trekking
your berasal dari trekk
jadi tidak cocok dengan kata kunci pencarian trek
.
Anda dapat mengonfirmasi ini dengan menjelaskan kueri Anda dan meninjau parsedTextQuery
informasi yang menunjukkan istilah penelusuran yang digunakan:
db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
"terms" : [
"trekk"
],
"negatedTerms" : [ ],
"phrases" : [ ],
"negatedPhrases" : [ ]
}
Anda juga dapat memeriksa stemming Bola Salju yang diharapkan menggunakan Demo Bola Salju online atau dengan mencari perpustakaan Snowball untuk bahasa pemrograman pilihan Anda.
Untuk mengatasi pengecualian yang biasanya memengaruhi kasus penggunaan Anda, Anda dapat mempertimbangkan untuk menambahkan bidang lain ke indeks teks Anda dengan kata kunci untuk memengaruhi hasil pencarian. Untuk contoh ini, Anda akan menambahkan trek
sebagai kata kunci sehingga acara tersebut digambarkan sebagai trekking
juga cocok dengan hasil penelusuran Anda.
Ada pendekatan lain untuk infleksi yang lebih akurat yang umumnya disebut sebagai lemmatisasi . Algoritme lemmatisasi lebih kompleks dan mulai mengarah ke domain pemrosesan bahasa alami . Ada banyak toolkit open source (dan komersial) yang mungkin dapat Anda manfaatkan jika Anda ingin menerapkan pencarian teks yang lebih canggih dalam aplikasi Anda, tetapi ini berada di luar cakupan fitur pencarian teks MongoDB saat ini.