EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Tutorial: crie um aplicativo de pesquisa de filmes usando o Atlas Search

Karen Huaulme11 min read • Published Feb 12, 2022 • Updated Sep 15, 2023
AtlasPesquisaJavaScript
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Deixe-me advinhar. Você deseja oferecer aos usuários do seu aplicativo a capacidade de encontrar EXATAMENTE o que procuram RAPIDEZ! Quem não o faz? A pesquisa é um requisito para a maioria dos aplicativos atualmente. Com oMongoDB Atlas Search, ficou mais fácil do que nunca integrar recursos de pesquisa simples, refinados e rápidos em todos os seus aplicativos MongoDB. Para demonstrar como é fácil, vamos criar um aplicativo da web para encontrar nossos filmes favoritos.
Este tutorial é o primeiro de uma série de quatro partes em que aprenderemos nos próximos meses a criar o aplicativo apresentado em nossa demonstração do produto Atlas Search.
Munidos apenas de um conhecimento básico de HTML e Javascript, desenvolveremos nosso aplicativo nas quatro partes a seguir.
O caminho para o nosso aplicativo de pesquisa de filmes
Parte 1
Entre em operação com um mecanismo de pesquisa básico de filmes, o que nos permite procurar filmes com base em um tópico em nossos dados de filmes do MongoDB Atlas.
Parte 2Torne isso ainda mais fácil para nossos usuários criando queries de pesquisa mais avançadas com correspondência difusa e caminhos curinga para perdoá-los por erros de digitação e ortografia. Introduziremos modificadores de pontuação personalizados que nos permitirão influenciar os resultados de nossos filmes.
Parte 3Adicionar recursos de preenchimento automático ao nosso aplicativo de filmes. Também discutiremos mapeamentos e analisadores de índices e como usá-los para otimizar o desempenho do nosso aplicativo.
Parte 4Encerre nosso aplicativo criando filtros para fazer query de datas e números para ajustar ainda mais os resultados do Atlas Search de filmes. Nós até mesmo hospedaremos o aplicativo no Realm, nossa plataforma de backend sem servidor, para que você possa entregar seu site de filmes Atlas Search em qualquer lugar do mundo.
Agora, sem mais delongas, vamos embarcar com esse show!
Showtime
Este tutorial orientará você na criação de um mecanismo de pesquisa de filmes muito básico em um Atlas Search cluster de camada gratuita. Vamos configurá-lo de forma que nos permita dimensionar nossa pesquisa de maneira altamente eficiente à medida que continuarmos a desenvolver novos recursos em nosso aplicativo nas próximas semanas. Ao final da Parte 1, você terá algo parecido com isso:
Aplicação de exemplo de Full Text Search
Para realizar isso, aqui estão nossas tarefas para hoje:
Lista de tarefas

PASSO 1. Gire o Atlas Cluster e Carregue Dados de Filme

Para começar, precisaremos apenas de um Atlas cluster, que você pode obter gratuitamente, carregado com o conjunto de dados de amostra do Atlas. Se você ainda não tiver um, inscreva-se para criar um Atlas cluster em seu provedor de nuvem e região preferidas.
Depois de ter seu cluster, você pode carregar o conjunto de dados de amostra clicando no botão de elipse e em Load Sample Dataset (Carregar conjunto de dados de amostra).
Carregar conjunto de dados de amostra
Para obter informações mais detalhadas sobre como criar um cluster, configurar seu endereço IP, criar um usuário e carregar dados de exemplo, consulte [Introdução ao MongoDB Atlas](https://docs.atlas.mongodb.com/getting- started/#atlas-getting started) em nossa documentação.
Agora, vamos dar uma olhada em nossos dados de amostra dentro do Atlas Data Explorer. Na interface do usuário do Atlas, clique em collection para examinar a collection defilmes no novo banco de dadossample_mflix. Esta collection possui mais 23documentos de filmes k com informações como título, trama e elenco. A collectionsample_mflix.movies fornece o conjunto de dados para nosso aplicativo.
\
Lista de tarefas 1

PASSO 2. Crie um índice de pesquisa

Como nosso mecanismo de pesquisa de filmes procurará filmes com base em um tópico, usaremos o Atlas Search para consultar palavras e frases específicas no campo fullplot dos documentos.
A primeira coisa que precisamos é de um índice do Atlas Search. Clique na aba intitulada Pesquisar índices em collections. Clique no botão verde Criar índice de pesquisa. Vamos aceitar as configurações padrão e clicar em Criar índice. É tudo que você precisa fazer para começar a aproveitar a pesquisa em seus dados do MongoDB Atlas!
Criar índice de pesquisa de texto completo
Ao aceitar as configurações padrão quando criamos o índice Search, mapeamos dinamicamente todos os campos da coleção, conforme indicado na configuração padrão do índice:
O mapeamento é simplesmente como definimos como os campos em nossos documentos são indexados e armazenados. Se o valor de um campo parecer uma string, nós o trataremos como um campo de texto completo, da mesma forma para números e datas. Isso se encaixa perfeitamente no modelo de dados flexível do MongoDB. À medida que você adiciona novos dados à sua collection e seu esquema evolui, o mapeamento dinâmico acomoda essas mudanças em seu esquema e adiciona esses novos dados automaticamente ao índice do Atlas Search.
Falaremos mais sobre mapeamento e índices na parte 3 de nossa série. Por enquanto, podemos marcar outro item de nossa lista de tarefas.
Lista de tarefas 2

PASSO 3. Escrever uma agregação básica com operadores de $search

As consultas de pesquisa assumem a forma de um estágio de pipeline de agregação . O $search estágio executa uma consulta de pesquisa nos campos especificados cobertos pelo índice de pesquisa e deve ser usado como o primeiro estágio no pipeline de agregação .
Vamos usar o construtor de pipeline de agregação dentro da UI do Atlas para criar um pipeline de agregação que faça uso de nosso índice do Atlas Search. Nossa agregação básica consistirá em apenas três estágios: $search, $project e $limit.
Você não precisa usar a ferramenta de criação de pipeline para este estágio, mas eu realmente amo a interface de usuário fácil de usar. Além disso, a capacidade de visualizar os resultados por estágio facilita a solução de problemas!
Snap!
Navegue até a guia Agregação na collection sample_mflix.movies :
Guia Agregações
Na primeira etapa, selecione o operador de agregação $searchpara pesquisar otexto "werewolves and vampires" no caminho do campo fullplot.
\
Você também pode adicionar a opção dedestaque, que retornará os destaques adicionando campos à carga útil do resultado que exibe os termos de pesquisa em seu contexto original, juntamente com o conteúdo do texto adjacente. (Mais sobre isso adiante).
\
Seu estágio de agregação$searchfinal deve ser:
Observe os documentos de filme retornados no painel de visualização à direita. Se nenhum documento estiver no painel, verifique novamente a formatação no código de agregação.

Estágio 2: $project

\
Adicione $project o estágio ao seu pipeline para obter apenas os campos que usaremos em nosso aplicativo de pesquisa de filmes. Também usamos o $meta operador para exibir osearchScore e searchHighlights de cada documento no conjunto de resultados.
Vamos detalhar ainda mais as peças individuais neste estágio:
PONTUAÇÃO: O "$meta": "searchScore" contém a pontuação atribuída ao documento com base na relevância.Isso significa quão bem o campofullplotdeste filme corresponde aos termos de consulta "lobisomens e vampiros" acima.
Observe que, ao rolar a tela no painel de visualização à direita, os documentos do filme são retornados com a pontuação em ordemdecrescente. Isso significa que obtemos os filmes com melhor correspondência primeiro.
DETALHE: O "$meta": "searchHighlights" contém os resultados realçados.
Porque searchHighlights e searchScore não fazem parte do documento original, é necessário usar um estágio de pipeline $project para adicioná-los à saída da query.
Agora, abra a matrizde destaquede um documento para mostrar os objetos de dados com valores e tiposde texto.
highlight.texts.value - texto do campo fullplot retornando uma correspondência
highlight.texts.type - uma ocorrência ou um texto
  • hit é uma correspondência para a consulta
  • texto é o contexto de texto circundante adjacente à string correspondente
Nós os usaremos mais tarde no código do nosso aplicativo.

Estágio 3: $limit

\
Lembre-se de que os resultados são retornados com as pontuações em ordem decrescente. $limit: 10 trará, portanto, os 10 documentos de filmes mais relevantes para sua consulta de pesquisa. O $limit é muito importante na Pesquisa porque a velocidade é muito importante. Sem $limit:10, obteríamos as pontuações de todos os 23k filmes. Não precisamos disso.
Por fim, se você ver resultados no painel de visualização correto, seu pipeline de agregação está funcionando corretamente! Vamos pegar esse código de agregação com o recurso Export Pipeline to Language clicando no botão na barra de ferramentas superior.
Botão Exportar
Exportar para pipeline
Seu código de agregação final será este:
Este pequeno trecho de código alimenta nosso mecanismo de pesquisa de filmes!
Lista de tarefas 3

PASSO 4. Criar uma REST API

Agora que temos o núcleo de nosso mecanismo de pesquisa de filmes na forma de um aggregation pipeline, como o usaremos em um aplicativo? Há muitas maneiras de fazer isso, mas o mais fácil foi simplesmente criar uma API para expor esses dados - e, para isso,usei o MongoDB Realm HTTP Service dentro do Atlas.
Realm é a plataforma sem servidor do MongoDB em que as funções escritas em Javascript são dimensionadas automaticamente para atender à demanda atual. Para criar um aplicativo Realm, retorne à interface do usuário do Atlas e clique em Realm. Em seguida, clique no botão verde Iniciar um novo aplicativo Realm.
Nomeie seu aplicativo Realm como MovieSearchApp e certifique-se de vincular ao seu cluster. Todas as outras configurações padrão estão corretas.
Agora clique no menu 3Serviços de terceiros à esquerda e, em seguida, em Adicionar um serviço. Selecione o HTTP Service e nomeie-o de filmes:
Adicione um serviço
Clique no botão verde Adicionar um serviço e você será direcionado para Adicionar webhookde entrada.
Na guia Configurações , nomeie seu webhook de getMoviesBasic. Habilite Responder com resultado e defina o Método HTTP como GET. Para simplificar as coisas, vamos apenas executar o webhook como o sistema e pular a validação sem autorização adicional. Certifique-se de clicar no botão Revisar e distribuir na parte superior do caminho.
Webhook
Nesse editor de funções de serviço, substitua o código de exemplo pelo seguinte:
Vamos decompor alguns desses componentes. O MongoDB Realm interage com sua collection de filmes do Atlas por meio da variável decontextoglobal. Na função de serviço, usamos essa variável de contexto para acessar a collectionsample_mflix.movies em seu Atlas cluster. Faremos referência a essa collection por meio dos filmesde variáveis const:
Capturamos o argumento de query da carga útil:
Retorne o código de aggregation executado na collection colando a aggregation copiada do construtor de aggregation pipeline no código abaixo:
Finalmente, depois de colar o código de agregação, altere os termos "lobigomes e Vampries" para o arggenérico para corresponder ao argumento de query de carga útil da função - caso contrário, os recursos do mecanismo Atlas Search de filmes serão extremamente limitados.
Consulta de código
Seu código final no editor de funções será:
Agora você pode testar no Console abaixo do editor alterando o argumento de arg1: "hello" para arg: "werewolves and vampires".
Certifique-se de alterar AMBOS o nome do campo arg1 para arg, bem como o valor da string "hello" para "werelophyllums and vampiros" - ou não funcionará.
Desenvolvedor frustrado
Console de teste
Clique em Run para verificar o resultado:
Resultados da query
Se isso estiver funcionando, parabéns! Estamos quase terminando! Certifique-se de SALVAR e implantar o serviço clicando em REVISAR E IMPLEMENTAR ALTERAÇÕES na parte superior da tela.

Use a API

O melhor de uma REST API é que ela pode ser chamada de qualquer lugar. Vamos executá-lo em nosso navegador. No entanto, se você tiver ferramentas como o Postman instaladas, sinta-se à vontade para tentar também.
Volte para as Configurações da sua funçãogetMoviesBasic e você notará que uma URL de webhook foi gerada.
URL do Webhook
Clique no botãoCopiar e cole a URL no seu navegador. Em seguida, anexe o seguinte ao final do seu URL: ?arg="werelobos e Vampries"
Resultado da consulta
Se você receber uma saída como a que temos acima, felicitações! Você criou com sucesso uma API de busca de filmes! 🙌 💪
Lista de tarefas 4
Estamos quase lá

Etapa 5. Finalmente! FRONT-END

Agora que temos esse endpoint, é necessária uma única chamada do aplicativo front-end usando a API de busca para recuperar esses dados. Baixe o seguinte arquivo index.html e abra-o em seu navegador. Você verá uma barra de pesquisa simples:
Barra de Pesquisa
A inserção de dados no Atlas Search gerará resultados da pesquisa de filmes porque o aplicativo está apontando para uma API existente no momento.
Agora abra o arquivo HTML com seu editor de texto favorito e familiarize-se com o conteúdo. Você notará que isso contém um container muito simples e duas funções javascript:
  • Linha 81 - userAction() será executado quando o usuário inserir uma pesquisa. Se houver uma entrada válida na caixa de pesquisa e não houver erros, chamaremos a funçãobuildMovieList().
  • Linha 125 - buildMovieList() é uma função auxiliar para userAction().
A funçãobuildMovieList() irá construir a lista de filmes juntamente com suas pontuações e destaques do campo fullplot. Observe na linha 146 que, se o highlight.texts.type === "acertar", destacamos o highlight.texts.value com uma tag de atributo de estilo.*

Modifique o código front-end para usar sua API

Na função userAction(), observe na linha 88 que o webhook_url já está definido para uma API RESTful que criei em meu próprio aplicativo Movie Search.
Capturamos a entrada do campo de formulário Atlas Search na linha 82 e a definimos como igual a searchString. Neste aplicativo, anexamos essa entradasearchString ao webhook_url
antes de chamá-lo na API de busca na linha 92.
Para tornar esse aplicativo totalmente seu, basta substituir o valorwebhook_urlexistente na linha 88 por sua própria API do webhook getMoviesBasic Realm HTTP Service que você acabou de criar. } Agora, salve essas alterações e abra o arquivoindex.html mais uma vez no seu navegador. Você acabou de criar seu mecanismo de pesquisa de filmes usando o Atlas Search. . . . .
Passe a pipoca! . . . Que tipo de filme você quer assistir?!
Demonstração de screencast

Isso é um envoltório!

Você acabou de ver como é fácil criar um Atlas Search simples e poderoso em um aplicativo com o MongoDB Atlas Atlas Search. Em nosso próximo tutorial, continuamos criando queries mais avançadas do Atlas Search em nosso aplicativo de filmes com correspondência difusa e curingas para evitar erros de digitação e digitações. Introduziremos até mesmo modificadores de pontuação personalizados para nos permitir moldar nossos resultados do Atlas Search. Confira nossa documentação do$Atlas Search para conhecer outras possibilidades.
eu encontrarei você
Aproveite o poder do Apache Lucene para algoritmos de pesquisa eficientes, mapeamento de campo estático e dinâmico para indexação flexível e escalável, tudo isso usando a mesma linguagem de query do MongoDB (MQL) que você já conhece e ama, falada em nossa melhor impressão de Liam Neeson - MongoDB agora tem um conjunto muito específico de habilidades. Competências que adquiriram ao longo de uma carreia muito longa. Competências que fazem do MongoDB um SONHO para programadores como você.
Contamos com você na Parte 2. Até lá, se você tiver alguma dúvida ou quiser se conectar com outros desenvolvedores do MongoDB, consulte os fóruns da nossa comunidade. Vinde aprender. Fique para se conectar.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Transmissão de dados do MongoDB para o BigQuery usando conectores Confluent


Jul 11, 2023 | 4 min read
exemplo de código

Final Space API


Jul 07, 2022 | 1 min read
Tutorial

Pesquisando sua localização com Atlas Search e operadores geoespaciais


Feb 03, 2023 | 9 min read
Tutorial

Seleção de sub-rede CIDR para MongoDB Atlas


Sep 23, 2022 | 2 min read
Sumário