textové vyhledávání funkce v MongoDB (jako ve verzi 2.6) nemá žádné vestavěné funkce pro fuzzy/částečné porovnávání řetězců. Jak jste si všimli, případ použití se v současné době zaměřuje na podporu jazyka a stemming se základními booleovskými operátory a párováním slov a frází.
Existuje několik možných přístupů, které je třeba zvážit pro fuzzy párování v závislosti na vašich požadavcích a na tom, jak chcete kvalifikovat jako „efektivní“ (rychlost, úložiště, čas vývojáře, požadovaná infrastruktura atd.):
-
Implementujte podporu fuzzy/částečné shody ve své aplikační logice pomocí některých snadno dostupných algoritmů zvukové podobnosti a podobnosti. Mezi výhody tohoto přístupu patří, že nemusíte přidávat žádnou další infrastrukturu a je možné přesně vyladit přizpůsobení vašim požadavkům.
Některé podrobnější příklady viz:Efektivní Techniky pro fuzzy a částečné párování v MongoDB .
-
Integrace s externím vyhledávacím nástrojem, který poskytuje pokročilejší vyhledávací funkce. To přidává určitou složitost k vašemu nasazení a je pravděpodobně příliš náročné pouze pro psaní napřed, ale můžete najít další funkce vyhledávání, které byste chtěli začlenit jinde ve své aplikaci (např. „takto“, blízkost slov, vyhledávání s fazetou, ..).
Viz například:Jak postupovat Fuzzy-Matching s Mongo Connector a Elastic Search . Poznámka:fuzzy dotaz společnosti ElasticSearch je založena na Levenshteinově vzdálenosti.
-
Použijte knihovnu automatického doplňování, jako je open source Twitter
typeahead.js
, který zahrnuje modul návrhů a rozhraní API pro dotazy/ukládání do mezipaměti. Typeahead ve skutečnosti doplňuje jakýkoli jiný backendový přístup a jeho (volitelný) návrhový engine Bloodhound podporuje předběžné načítání i ukládání dat do mezipaměti v místním úložišti.