Textové vyhledávání MongoDB používá knihovnu pramenů ze sněhové koule k redukci slov na očekávaný kořenový tvar (nebo kmen ) na základě společných jazykových pravidel. Algoritmické stemming poskytuje rychlou redukci, ale jazyky mají výjimky (jako jsou nepravidelné nebo protichůdné vzorce konjugace sloves), které mohou ovlivnit přesnost. Úvod do sněhové koule obsahuje dobrý přehled některých omezení algoritmického stemmingu.
Váš příklad walking
stonky walk
a odpovídá podle očekávání.
Nicméně váš příklad trekking
vychází z trekk
takže neodpovídá vašemu vyhledávacímu klíčovému slovu trek
.
Můžete to potvrdit vysvětlením svého dotazu a kontrolou parsedTextQuery
informace, které ukazují použité hledané výrazy:
db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
"terms" : [
"trekk"
],
"negatedTerms" : [ ],
"phrases" : [ ],
"negatedPhrases" : [ ]
}
Můžete také zkontrolovat očekávaný výskyt sněhové koule pomocí online ukázky sněhové koule nebo vyhledáním knihovny Snowball pro váš preferovaný programovací jazyk.
Chcete-li obejít výjimky, které mohou běžně ovlivnit váš případ použití, můžete zvážit přidání dalšího pole do textového indexu s klíčovými slovy, abyste ovlivnili výsledky vyhledávání. Pro tento příklad byste přidali trek
jako klíčové slovo, takže událost popsaná jako trekking
odpovídá také ve výsledcích vyhledávání.
Existují další přístupy pro přesnější skloňování, které se obecně označují jako lemmatizace . Lemmatizační algoritmy jsou složitější a začínají směřovat do domény zpracování přirozeného jazyka . Existuje mnoho open source (a komerčních) sad nástrojů, které můžete využít, pokud chcete ve své aplikaci implementovat pokročilejší textové vyhledávání, ale tyto jsou mimo aktuální rozsah funkce textového vyhledávání MongoDB.