La recherche de texte fonctionnalité dans MongoDB (à partir de 2.6) n'a pas de fonctionnalités intégrées pour la correspondance de chaîne floue/partielle. Comme vous l'avez noté, le cas d'utilisation se concentre actuellement sur la prise en charge de la langue et de la racine avec des opérateurs booléens de base et la correspondance mot/phrase.
Il existe plusieurs approches possibles à considérer pour la correspondance floue en fonction de vos besoins et de la manière dont vous souhaitez qualifier "d'efficace" (vitesse, stockage, temps de développement, infrastructure requise, etc.) :
-
Implémentez la prise en charge de la correspondance floue/partielle dans la logique de votre application à l'aide de certains des algorithmes de similarité et de similarité facilement disponibles. Les avantages de cette approche incluent le fait de ne pas avoir à ajouter d'infrastructure supplémentaire et de pouvoir s'adapter étroitement à vos besoins.
Pour des exemples plus détaillés, voir :Efficace Techniques de correspondance approximative et partielle dans MongoDB .
-
Intégrez un outil de recherche externe qui fournit des fonctionnalités de recherche plus avancées. Cela ajoute une certaine complexité à votre déploiement et est probablement exagéré juste pour la saisie anticipée, mais vous pouvez trouver d'autres fonctionnalités de recherche que vous aimeriez incorporer ailleurs dans votre application (par exemple "comme ça", proximité de mot, recherche à facettes, ..).
Par exemple, voir :Comment effectuer Fuzzy-Matching avec Mongo Connector et Elastic Search . Remarque :requête floue est basé sur la distance de Levenshtein.
-
Utilisez une bibliothèque de saisie semi-automatique comme la source open source de Twitter
typeahead.js
, qui inclut un moteur de suggestion et une API de requête/cache. Typeahead est en fait complémentaire de toutes les autres approches backend, et son moteur de suggestion (facultatif) Chien de sang prend en charge la prélecture ainsi que la mise en cache des données dans le stockage local.