MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pesquisa de texto completo do MongoDB - palavras e frases exatas correspondentes


Você tentou a pesquisa de texto para ver se não se comportou corretamente? Funciona como esperado para mim no 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" }

Por que "tempo" nos terms matriz na explicação? Porque se a frase "on time" ocorre em um documento, o termo time deve também. O MongoDB usa o índice de texto na medida do possível para ajudar a localizar a frase e, em seguida, verificará os resultados do índice para ver qual realmente corresponde à frase completa e não apenas aos termos na frase.