De tekst zoeken feature in MongoDB (zoals bij 2.6) heeft geen ingebouwde features voor fuzzy/partial string matching. Zoals je hebt opgemerkt, richt de use-case zich momenteel op taal- en stemondersteuning met elementaire booleaanse operatoren en woord/zin-overeenkomst.
Er zijn verschillende mogelijke benaderingen voor fuzzy matching, afhankelijk van uw vereisten en hoe u "efficiënt" wilt kwalificeren (snelheid, opslag, ontwikkelaarstijd, vereiste infrastructuur, enz.):
-
Implementeer ondersteuning voor fuzzy/partial matching in uw toepassingslogica met behulp van enkele van de direct beschikbare soundalike- en similariteitsalgoritmen. Voordelen van deze aanpak zijn onder meer dat u geen extra infrastructuur hoeft toe te voegen en de afstemming nauwkeurig op uw vereisten kunt afstemmen.
Zie voor meer gedetailleerde voorbeelden:Efficiënt Technieken voor fuzzy en gedeeltelijke matching in MongoDB .
-
Integreer met een externe zoekfunctie die meer geavanceerde zoekfuncties biedt. Dit voegt wat complexiteit toe aan uw implementatie en is waarschijnlijk overdreven alleen voor typeahead, maar u kunt andere zoekfuncties tegenkomen die u elders in uw toepassing zou willen opnemen (bijv. "zoals dit", woordnabijheid, gefacetteerd zoeken, ..).
Zie bijvoorbeeld:Hoe te presteren Fuzzy-Matching met Mongo Connector en Elastic Search . Opmerking:ElasticSearch's fuzzy query is gebaseerd op Levenshtein-afstand.
-
Gebruik een bibliotheek voor automatisch aanvullen zoals Twitter's open source
typeahead.js
, die een suggestie-engine en een query/caching-API bevat. Typeahead is eigenlijk een aanvulling op alle andere backend-benaderingen en de (optionele) suggestie-engine Bloedhond ondersteunt zowel prefetching als caching van gegevens in lokale opslag.