MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Hentikan mongodb dari mengabaikan karakter khusus?

Deskripsi Tomalak tentang cara kerja pengindeksan teks sudah benar, tetapi Anda sebenarnya dapat menggunakan indeks teks untuk pencocokan frasa yang tepat pada frasa dengan karakter khusus:

> db.test.drop()
> db.test.insert({ "_id" : 0, "t" : "hey look at all this #text" })
> db.test.insert({ "_id" : 1, "t" : "text is the best" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.count({ "$text" : { "$search" : "text" } })
2
> db.test.count({ "$text" : { "$search" : "#text" } })
2

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }

Pencocokan frasa yang tepat ditunjukkan dengan mengapit frasa dalam tanda kutip ganda, yang perlu diloloskan dalam shell seperti "\"#text\"" .

Indeks teks lebih besar dari indeks normal, tetapi jika Anda melakukan banyak pencocokan frasa yang tidak peka huruf besar-kecil, maka itu bisa menjadi pilihan yang lebih baik daripada indeks standar karena kinerjanya lebih baik. Misalnya, pada bidang t dengan indeks { "t" : 1 } , ekspresi reguler yang sama persis

> db.test.find({ "t" : /#text/ })

melakukan pemindaian indeks penuh. Kueri teks analog (tetapi tidak setara)

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })

akan menggunakan indeks teks untuk menemukan dokumen yang berisi istilah "text" , lalu pindai semua dokumen tersebut untuk melihat apakah dokumen tersebut berisi frasa lengkap "#text ".

Hati-hati karena indeks teks tidak peka huruf besar-kecil. Melanjutkan contoh di atas:

> db.test.insert({ "_id" : 2, "t" : "Never seen so much #TEXT" })

> db.test.find({ "t" : /#text/ })
{ "_id" : 0, "t" : "hey look at all this #text" }

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }
{ "_id" : 2, "t" : "Never seen so much #TEXT" }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan janji luwak - luwak

  2. Bagaimana cara mengisi entitas bersarang di luwak?

  3. MongoDB - ukuran file sangat besar dan terus bertambah

  4. Pemantauan Database Tanpa Agen dengan ClusterControl

  5. Sintaks Kueri Berbeda C# MongoDB