sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB fuldtekstsøgning - matchende ord og eksakte sætninger

Har du prøvet tekstsøgningen for at se, om den ikke opførte sig korrekt? Det fungerer som forventet for mig på 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" }

Hvorfor er "tid" i terms række i forklare? Fordi hvis sætningen "on time" forekommer i et dokument, udtrykket time skal også. MongoDB bruger tekstindekset i det omfang det kan til at hjælpe med at finde sætningen og vil derefter tjekke indeksresultaterne for at se, hvilke der faktisk matcher hele sætningen og ikke kun termerne i sætningen.




  1. MongoDB:$lookup returnerer et tomt array

  2. MongoDb:aggregering $lookup med filtrering over de udenlandske dokumenter

  3. Mongodb-indsamlingsobjektcaching i Node.js

  4. Spring boot forsøger at oprette forbindelse til mongo, når der tilføjes mongo-java-driver maven-afhængighed