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 umakeywords
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 daskeywords
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.