Textové vyhledávání je navrženo tak, aby indexovalo řetězce na základě jazykové heuristiky . Indexování textu zahrnuje dva obecné kroky:tokenizace (převod řetězce na jednotlivé termíny zájmu) následovaný stemming (převedení každého výrazu do kořenové formy pro indexování na základě pravidel specifických pro daný jazyk).
Během kroku tokenizace určité znaky (například interpunkční symboly jako @
) jsou klasifikovány jako oddělovače slov (neboli oddělovače ) namísto zadávání textu a používá se k rozdělení původního řetězce na výrazy. zastavovací slova
specifická pro daný jazyk (běžná slova jako „the“, „is“ nebo „on“ v angličtině) jsou také vyloučena z textového rejstříku.
Od vaší vyhledávací fráze @@@
sestává výhradně z oddělovačů, v textovém rejstříku není žádná odpovídající položka.
Pokud chcete porovnat obecné vzory řetězců, měli byste použít regulární výrazy spíše než textové vyhledávání. Například:db.getCollection('TestCollection').find({field2:/@@@/})
. Vezměte však na vědomí upozornění týkající se používání indexu pro regulární výrazy.