MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Volltextsuche – passende Wörter und exakte Phrasen

Haben Sie die Textsuche ausprobiert, um zu sehen, ob sie sich nicht richtig verhält? Es funktioniert wie erwartet für mich auf 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" }

Warum ist "Zeit" in den terms Array in der Erklärung? Denn wenn der Ausdruck "on time" Kommt in einem Dokument der Begriff time vor muss auch. MongoDB verwendet den Textindex so weit wie möglich, um den Ausdruck zu finden, und überprüft dann die Indexergebnisse, um zu sehen, welcher tatsächlich mit dem vollständigen Ausdruck übereinstimmt und nicht nur mit den Begriffen im Ausdruck.