Die Textsuche Die Funktion in MongoDB (Stand 2.6) hat keine eingebauten Funktionen für Fuzzy-/Partial-String-Matching. Wie Sie bereits bemerkt haben, konzentriert sich der Anwendungsfall derzeit auf die Sprach- und Wortstammunterstützung mit einfachen booleschen Operatoren und Wort-/Phrase-Matching.
Es gibt mehrere mögliche Ansätze für Fuzzy-Matching, abhängig von Ihren Anforderungen und davon, wie Sie "effizient" qualifizieren möchten (Geschwindigkeit, Speicherplatz, Entwicklerzeit, erforderliche Infrastruktur usw.):
-
Implementieren Sie Unterstützung für Fuzzy-/Partial-Matching in Ihrer Anwendungslogik, indem Sie einige der leicht verfügbaren Soundalike- und Ähnlichkeitsalgorithmen verwenden. Zu den Vorteilen dieses Ansatzes gehört, dass keine zusätzliche Infrastruktur hinzugefügt werden muss und dass der Abgleich genau auf Ihre Anforderungen abgestimmt werden kann.
Ausführlichere Beispiele finden Sie unter:Effizient Techniken für Fuzzy- und Partial-Matching in MongoDB .
-
Integration mit einem externen Suchtool, das erweiterte Suchfunktionen bietet. Dies erhöht die Komplexität Ihrer Bereitstellung und ist wahrscheinlich zu viel des Guten, aber Sie finden möglicherweise andere Suchfunktionen, die Sie an anderer Stelle in Ihre Anwendung integrieren möchten (z. P>
Siehe zum Beispiel:How to Perform Fuzzy-Matching mit Mongo Connector und Elastic Search . Hinweis:unscharfe Abfrage basiert auf der Levenshtein-Distanz.
-
Verwenden Sie eine Bibliothek zur automatischen Vervollständigung wie Twitters Open Source
typeahead.js
, das eine Vorschlagsmaschine und eine Abfrage-/Caching-API enthält. Typeahead ergänzt tatsächlich alle anderen Backend-Ansätze und seine (optionale) Vorschlags-Engine Bluthund unterstützt sowohl das Prefetching als auch das Caching von Daten im lokalen Speicher.