sql >> Databáze >  >> NoSQL >> MongoDB

Fulltextové vyhledávání v MongoDB nepřináší očekávaný výsledek pro @@@

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.



  1. Dotaz Mongo $exists nevrací správné dokumenty

  2. Apollo/GraphQL:Jak získat vnořené prvky?

  3. Jak zlepšit výkon update() a save() v MongoDB?

  4. Interakce Python Redis