MongoDB $text
vyhledávání nepodporují částečnou shodu. MongoDB umožňuje textové vyhledávací dotazy na obsah řetězce s podporou rozlišení malých a velkých písmen, oddělovačů, stop slov a stemming. A výrazy ve vašem vyhledávacím řetězci jsou ve výchozím nastavení OR.
Vezměte své (velmi užitečné :) příklady jeden po druhém:
JEDNODOBA, ČÁSTEČNÉ
// returns nothing because there is no world word with the value `Crai` in your
// text index and there is no whole word for which `Crai` is a recognised stem
db.submissions.find({"$text":{"$search":"\"Crai\""}})
VÍCE TERMÍNŮ, ÚPLNÉ
// returns the document because it contains all of these words
// note in the text index Dr. Bob is not a single entry since "." is a delimiter
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
VÍCE PODMÍNEK, JEDNA ČÁSTEČNÁ
// returns the document because it contains the whole word "Craig" and it
// contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
VÍCE PODMÍNEK, OBA ČÁSTEČNÉ
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Mějte na paměti, že $search
řetězec je ...
Pokud tedy máte alespoň jeden výraz ve vašem $search
řetězec odpovídá, pak MongoDB odpovídá tomuto dokumentu.
Chcete-li toto chování ověřit, pokud upravíte svůj dokument změnou Dr. Bob
na DrBob
pak následující dotazy vrátí ne dokumenty:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Tyto nyní nevrací žádné shody, protože Dr
již není celé slovo ve vašem textovém indexu, protože za ním nenásleduje .
oddělovač.