sql >> Base de Datos >  >> NoSQL >> MongoDB

Búsqueda de texto completo de MongoDB:coincidencia de palabras y frases exactas

¿Probaste la búsqueda de texto para ver si no se comportaba correctamente? Funciona como se esperaba para mí en 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 qué está "tiempo" en los terms? matriz en la explicación? Porque si la frase "on time" ocurre en un documento, el término time también debe. MongoDB usa el índice de texto en la medida de lo posible para ayudar a localizar la frase y luego verificará los resultados del índice para ver cuál coincide realmente con la frase completa y no solo con los términos de la frase.