sql >> Database >  >> NoSQL >> MongoDB

MongoDB zoeken in volledige tekst - overeenkomende woorden en exacte woordgroepen

Heb je de tekstzoekfunctie geprobeerd om te zien of deze niet correct werkte? Het werkt zoals verwacht voor mij op MongoDB 2.6.7:

> 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" }

Waarom staat "tijd" in de terms array in de uitleg? Want als de zin "on time" komt voor in een document, de term time moet ook. MongoDB gebruikt de tekstindex voor zover mogelijk om de zin te lokaliseren en controleert vervolgens de indexresultaten om te zien welke daadwerkelijk overeenkomt met de volledige zin en niet alleen met de termen in de zin.




  1. Bekijk meer dan 20 meest recente documenten in MongoDB Compass van Schema

  2. RoR:mongoïde en vorm creëren hash

  3. Bereken een score van een bestaand veld met voorwaarden

  4. $and query geeft geen resultaat