sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB fulltextové vyhledávání - odpovídající slova a přesné fráze

Zkoušel jsi textové vyhledávání, jestli se nechoval správně? Na MongoDB 2.6.7 to funguje podle očekávání:

> db.test.drop()
> db.test.insert({ "t" : "I'm on time, not late or delayed" })
> db.test.insert({ "t" : "I'm either late or delayed" })
> db.test.insert({ "t" : "Time flies like a banana" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.find({ "$text" : { "$search" : "time late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "Time flies like a banana" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }
{ "t" : "I'm either late or delayed" }

> db.test.find({ "$text" : { "$search" : "late delay \"on time\"" } }, { "_id" : 0 })
{ "t" : "I'm on time, not late or delayed" }

Proč je v terms výraz "čas". pole ve vysvětlení? Protože pokud fráze "on time" vyskytuje se v dokumentu, termín time Musí také. MongoDB používá textový index do té míry, do jaké může pomoci najít frázi, a poté zkontroluje výsledky indexu, aby zjistila, která ve skutečnosti odpovídá celé frázi a ne pouze výrazům ve frázi.




  1. Django ValueError:Pro cestu 'ws/chat//' nebyla nalezena žádná trasa

  2. Seskupit podle dne s více datovými poli

  3. MongoDB Change Stream:Mohu získat hodnotu před aktualizací/smazáním?

  4. Vložte do vysoce vnořeného dokumentu MongoDB