A pesquisa de texto O recurso no MongoDB (como na versão 2.6) não possui nenhum recurso interno para correspondência de strings difusa/parcial. Como você notou, o caso de uso atualmente se concentra no suporte a idiomas e lematização com operadores booleanos básicos e correspondência de palavras/frases.
Existem várias abordagens possíveis a serem consideradas para correspondência difusa, dependendo de seus requisitos e de como você deseja qualificar como "eficiente" (velocidade, armazenamento, tempo do desenvolvedor, infraestrutura necessária etc.):
-
Implemente suporte para correspondência difusa/parcial em sua lógica de aplicativo usando alguns dos algoritmos de similaridade e similaridade prontamente disponíveis. Os benefícios dessa abordagem incluem não ter que adicionar nenhuma infraestrutura extra e ser capaz de ajustar a correspondência aos seus requisitos.
Para alguns exemplos mais detalhados, consulte:Eficiente Técnicas para correspondência difusa e parcial no MongoDB .
-
Integre com uma ferramenta de pesquisa externa que fornece recursos de pesquisa mais avançados. Isso adiciona alguma complexidade à sua implantação e provavelmente é um exagero apenas para digitação antecipada, mas você pode encontrar outros recursos de pesquisa que gostaria de incorporar em outro lugar em seu aplicativo (por exemplo, "assim", proximidade de palavras, pesquisa facetada, ..).
Por exemplo, consulte:Como executar Fuzzy-Matching com Mongo Connector e Elastic Search . Observação:a consulta difusa é baseado na distância de Levenshtein.
-
Use uma biblioteca de preenchimento automático como o código aberto do Twittertypeahead.js
, que inclui um mecanismo de sugestões e uma API de consulta/cache. Na verdade, o Typeahead é complementar a qualquer uma das outras abordagens de back-end e seu mecanismo de sugestão (opcional) Bloodhound suporta pré-busca, bem como armazenamento em cache de dados no armazenamento local.