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

Jak funguje MongoDB $text search?

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.




  1. MongoDB C# Index pole nebo indexování vnitřních položek polí

  2. Jak volat db.Collection.stats() z java ovladače Mongo

  3. Najděte všechny duplicitní dokumenty v kolekci MongoDB podle klíčového pole

  4. nemůže zabít redis-server na linuxu