tekstsøgning feature i MongoDB (som ved 2.6) har ingen indbyggede funktioner til fuzzy/partial string matching. Som du har bemærket, fokuserer use casen i øjeblikket på sprog- og afledningsunderstøttelse med grundlæggende booleske operatorer og ord/sætningsmatchning.
Der er flere mulige tilgange at overveje for fuzzy matching afhængigt af dine krav og hvordan du vil kvalificere dig "effektiv" (hastighed, lagring, udviklertid, krævet infrastruktur osv.):
-
Implementer understøttelse af fuzzy/partiel matching i din applikationslogik ved hjælp af nogle af de let tilgængelige soundalike og lighedsalgoritmer. Fordelene ved denne tilgang omfatter ikke at skulle tilføje nogen ekstra infrastruktur og være i stand til nøje at tilpasse til dine behov.
For nogle mere detaljerede eksempler, se:Efficient Teknikker til fuzzy og delvis matching i MongoDB .
-
Integrer med et eksternt søgeværktøj, der giver mere avancerede søgefunktioner. Dette tilføjer en vis kompleksitet til din udrulning og er sandsynligvis overdrevent bare for at skrive på forhånd, men du kan finde andre søgefunktioner, du gerne vil inkorporere andre steder i din applikation (f.eks. "sådan", ordnærhed, facetteret søgning, ..).
Se for eksempel:Sådan udføres Fuzzy-Matching med Mongo Connector og Elastic Search . Bemærk:ElasticSearchs fuzzy query er baseret på Levenshtein afstand.
-
Brug et autofuldførelsesbibliotek som Twitters open source
typeahead.js
, som inkluderer en forslagsmotor og forespørgsel/cache-API. Typeahead er faktisk komplementær til enhver af de andre backend-tilgange, og dens (valgfri) forslagsmotor Bloodhound understøtter forudhentning samt caching af data i lokalt lager.