MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pesquisa de texto completo do MongoDB + solução alternativa para correspondência parcial de palavras


Raiz de idioma na pesquisa de texto usa um algoritmo para tentar relacionar palavras derivadas de uma base comum (por exemplo, "running" deve corresponder a "run"). Isso é diferente da correspondência de prefixo (por exemplo, "blue" correspondente a "blueberry") que você deseja implementar para um recurso de preenchimento automático.

Para usar com mais eficiência typeahead.js com a pesquisa de texto do MongoDB, sugiro focar no prefetch suporte em typeahead:

  • Crie uma keywords coleção que tem as palavras comuns (talvez com contagem de frequência de uso) usadas em sua coleção. Você pode criar esta coleção executando um Map/Reduce em toda a coleção em que você tem o índice de pesquisa de texto e mantenha a lista de palavras atualizada usando um Mapa/Redução Incremental à medida que novos documentos são adicionados.

  • Faça com que seu aplicativo gere um documento JSON a partir das keywords coleção com as palavras-chave exclusivas (talvez limitada a palavras-chave "populares" com base na frequência de palavras para manter a lista gerenciável/relevante).

Você pode então usar as palavras-chave geradas JSON para autocompletar do lado do cliente com o prefetch do typeahead característica:
$('.mysearch .typeahead').typeahead({
  name: 'mysearch',
  prefetch: '/data/keywords.json'
});

typeahead.js armazenará em cache a prefetch Dados JSON em localStorage para pesquisas do lado do cliente. Quando o formulário de pesquisa é enviado, seu aplicativo pode usar o MongoDB do lado do servidor pesquisa de texto para retornar os resultados completos em ordem de relevância.