Há cerca de uma semana, escrevi um tutorial para Implementação de uma pesquisa typeahead com Node.js e jQuery. Um typeahead é um dos muitos casos de uso excelentes ao usar a pesquisa de texto completo (FTS), mas certamente não é o único caso de uso. Como muitos de vocês sabem, sou um grande fã do Golang e do Node.js, então achei que seria uma boa ideia ver o mesmo exemplo, mas desta vez usando uma tecnologia de programação diferente.

Veremos como usar o typeahead.jsuma extensão do jQuery, bem como Couchbase e a linguagem de programação Go para implementar um tipo de preenchimento automático em nosso aplicativo.

Se você não viu meu Artigo anteriorNão se preocupe, pois é uma linguagem diferente e, portanto, um problema diferente. Vamos começar do zero e ver como as coisas são feitas com o Go. Pressupõe-se que você tenha o Go instalado e configurado, bem como o Couchbase instalado e configurado.

Preparação de um conjunto de dados e de um índice de pesquisa de texto completo

Para este exemplo, trabalharemos com um conjunto de dados muito simples, mas ele poderia ser significativamente mais complexo com um mínimo de esforço extra. Nosso conjunto de dados será parecido com o seguinte:

Cada documento em nosso banco de dados representará uma música. Para simplificar, vamos nos concentrar apenas no documento título e artista informações, mas os documentos podem conter uma grande variedade de informações.

A próxima etapa é criar um índice FTS para nossos documentos.

A imagem acima demonstra como deve ser um índice. No que se refere ao mapeamento de tipos, vamos mapear apenas o tipo música documentos. Também estamos especificando que queremos apenas o artista e título informações em nosso índice. A parte importante aqui é que estamos armazenando os campos no índice. Se não optarmos especificamente por armazenar o campo no índice, não teremos informações para preencher nos resultados da pesquisa.

Criação do back-end do Go Powered Full Text Search (FTS)

Com alguns dados e nosso índice FTS instalados, podemos começar a desenvolver o backend que executará as consultas. Nosso backend será uma API RESTful com um único endpoint para pesquisa. O boilerplate para esse aplicativo pode ser visto abaixo:

Primeiro, estamos criando uma estrutura de dados nativa em Go que, por fim, conterá nossos resultados de pesquisa previstos. Ignorando a lógica do endpoint por enquanto, temos nosso principal na qual nos conectamos ao nosso banco de dados e definimos nosso único ponto de extremidade. Como a pesquisa será feita via JavaScript, precisamos configurar o compartilhamento de recursos entre origens (CORS) para permitir as solicitações.

Se quiser saber mais sobre o compartilhamento de recursos entre origens com Go, escrevi um artigo sobre Artigo anterior sobre o assunto. Entretanto, conhecer os detalhes não é muito importante para este exemplo.

Vamos dar uma olhada na função que importa:

Quando essa função é chamada, extraímos todos os parâmetros dos parâmetros de consulta da solicitação. Esses parâmetros são usados para criar uma nova consulta em nosso índice de pesquisa de texto completo. Na resposta, queremos que tanto o artista e título portanto, devemos defini-los em nossa consulta. Após a execução bem-sucedida, percorremos os resultados da pesquisa e construímos um objeto que pode ser útil para o nosso frontend.

Se você quisesse executar o aplicativo Go, http://localhost:12345/search?query=swift pode potencialmente retornar resultados.

Projetando o front-end jQuery para pesquisas Typeahead no banco de dados

Com o backend pronto, agora podemos nos concentrar no frontend. O frontend será universal, independentemente de qual linguagem de backend que você vai usar.

Nosso objetivo é criar algo assim:

Vamos usar typeahead.js, jQuerye Guidão.js para que essa parte seja um sucesso. No entanto, é muito importante que usemos a versão 0.10.5 do typeahead.js devido a um bug em versões posteriores.

Com as bibliotecas baixadas, crie uma estrutura de projeto semelhante à seguinte:

Certifique-se de que suas versões correspondam às versões de seus arquivos e não às minhas.

No index.html podemos inicializar nosso código com o seguinte:

Observe que o código acima contém essencialmente apenas uma entrada de formulário e a importação de todas as nossas bibliotecas. Eu recomendei onde nossa lógica para o typeahead terminará.

Vamos encerrar esse assunto com nossa lógica:

A primeira parte do nosso typeahead é a configuração. Estamos dizendo que queremos que as dicas sejam exibidas e que nossa lógica não ocorrerá a menos que haja pelo menos três caracteres na pesquisa para economizar em chamadas remotas. Não destacaremos os resultados, mas os limitaremos a cinco. Para conduzir a lógica do nosso typeahead, emitiremos uma solicitação ao nosso backend e processaremos a resposta. Ela será renderizada com base em nosso modelo personalizado do Handlebars.

O displayKey é o que queremos mostrar depois que um resultado é clicado. Em nosso cenário, queremos mostrar os artistas e os títulos das músicas, mas preencher o ID quando clicado. Dessa forma, o ID pode ser enviado em uma solicitação futura, se quisermos.

Conclusão

Você acabou de ver como criar uma pesquisa typeahead em jQuery com Go como backend e Couchbase como o banco de dados NoSQL. Esse tutorial foi uma continuação de um tutorial anterior onde escrevi o back-end do FTS com Node.js e JavaScript.

Para obter mais informações sobre como usar o Go SDK com o Couchbase, consulte a seção Portal do desenvolvedor do Couchbase.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixar uma resposta