A Voyage AI se une ao MongoDB para impulsionar aplicativos de AI mais precisos e confiáveis no Atlas.
Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .
Uma das minhas atividades favoritas é viajar e explorar o mundo. Você conhece essa impressão de descobrir um novo lugar e pensar: "Como não estava aqui antes?" É com essa impressão que sempre me motivo a procurar novos lugares para descobrir. Muitas vezes, ao procurar um lugar para ficar, não temos certeza do que procuramos ou quais experiências queremos ter. Por exemplo, podemos querer alugar um quarto em uma cidade com vista para um reino. Encontrar algo assim pode parecer difícil, não é mesmo? No entanto, há uma maneira de o Atlas Search obter informações com precisão usando o Atlas Search.
Neste tutorial, aprenderemos a criar um aplicativo em Kotlin que utiliza o Atlas Search de texto completo em um banco de dados contendo milhares de anúncios do Airbnb. Veremos como podemos encontrar a hospedagem perfeita que atenda às nossas necessidades específicas.
Versão do vídeo
Aqui está uma versão em vídeo deste artigo, se você preferir assistir.
Demonstração
Para atingir nosso objetivo, criaremos um aplicativoKotlin Spring Boot que se comunica com o MongoDB Atlas usando o driver Kotlin Sync.
O aplicativo usará um banco de dados pré-importado no Atlas chamado sample_airbnb, utilizando a collectionlistingsAndReviews, que contém informações sobre vários Airbnbs.
Para identificar os melhores anúncios do Airbnb, criaremos um endpoint que retornará informações sobre esses anúncios. Esse endpoint usará o camposummaryda collection para executar uma Atlas Search de texto completo com o parâmetro fuzzy no operador de texto. Além disso, filtraremos os documentos com base em um número mínimo de revisões, utilizando as funcionalidades do Atlas Search fornecidas pelo Atlas Search.
figura: um carteiro demonstrando uma solicitação do Atlas Search.
Atlas Search é um recurso no MongoDB Atlas que fornece recursos poderosos e flexíveis do Atlas Search para seus dados. Ele se integra ao Apache Lucene, permitindo análise avançada de texto, pontuação personalizada e realce de resultados. Isso permite que você crie a funcionalidade sofisticada do Atlas Search diretamente nos seus aplicativos MongoDB .
Para utilizar o Atlas Search de forma eficaz, vamos nos concentrar em três operadores principais: text, rangee compound. Embora haja vários operadores disponíveis, nossa análise se concentrará neles para ilustrar suas aplicações práticas.
Texto: esse operador será usado para realizar pesquisas de texto em nosso endpoint, permitindo uma correspondência aproximada e variações de manuseio nos termos do Atlas Search.
Faixa: exploraremos o operador rangeespecificamente com a condiçãogte (maior ou iguala) para o camponumber_of_reviews. Isso nos permitirá fazer query e filtrar com base nas contagens de avaliações de forma eficaz.
Composto: O operadorcompound será utilizado para combinar as queriestext fuzzy e range em uma Pesquisa Atlas mais complexa e refinada. Isso demonstrará como mesclar múltiplos critérios para uma funcionalidade mais sofisticada do Atlas Search.
Embora este artigo não se aprofunde em todos os operadores disponíveis, os interessados em uma análise mais abrangente podem consultar a documentação do MongoDB Atlas Atlas Search para obter mais detalhes.
Carregar conjunto de dados de amostra
Antes de iniciar, você precisará importar o conjunto de dados de exemplo, que inclui vários bancos de dados e coleções, como a lista doAirbnb. Após configurar seu cluster, basta clicar em "Banco de Dados" no menu esquerdo e escolher "Carregar conjunto de dados de amostra", como mostrado na imagem:
Legum: Carregando conjunto de dados no MongoDB Atlas.
Se tudo correr bem, após a importação, você verá nossos databases e collections exibidos conforme a imagem.
Legado: MongoDB Atlas com bancos de dados e coleções importados.
Criando o índice Atlas Search
Após importar as collections, a próxima etapa é criar um índice para a collection do Airbnb. Para fazer isso, selecione "Banco de dados" no menu lateral em "Deployment," Go para a guia "Atlas Search" e clique em " Editor JSON ," conforme mostrado na imagem:
Imagem: MongoDB Atlas indicando a criação de um índice do Atlas Search .
Na próxima etapa, selecione o banco de dadossample_airbnb e a coleçãolistingsAndReviews(a coleção do Airbnb). Em seguida, nomeie seu índice de "searchPlaces":
Mapear: MongoDB Atlas indicando a criação de uma propriedade de índice do Atlas Search
Observe que estamos usando Mapeamentos dinâmicos por simplificação, o que permite que o Atlas Search indexe automaticamente os campos dos tipos suportados em cada documento. Para obter mais detalhes, sugere-se verificar Definir Mapeamentos de Campo
Se tudo correr bem, oíndice " searchPlaces" será criado com sucesso e você poderá visualizá-lo conforme mostrado na imagem abaixo:
Legum: Tela mostrando o índice criado do Atlas Search
Testando nosso índice no MongoDB Compass
Para testar nosso índice, precisamos criar um aggregation pipeline. Embora existam vários métodos para testar isso, usaremos o MongoDB Compass por conveniência. O MongoDB Compass é uma poderosa ferramenta de GUI que facilita o gerenciamento e a análise de dados do MongoDB. Ele fornece recursos para visualizar esquemas, criar queries e gerenciar dados por meio de uma interface intuitiva.
Precisamos configurar um pipeline de agregação para atender aos seguintes requisitos:
Filtrar o camposummary por texto
Garanta um mínimo number_of_reviews
Aqui está o pipeline de agregação que usaremos para testes:
1
[
2
{
3
$search: {
4
index: "searchPlaces",
5
compound: {
6
filter: [
7
{
8
range: {
9
path: "number_of_reviews",
10
gte: 50
11
}
12
},
13
{
14
text: {
15
path: "summary",
16
query: "Istambun",
17
fuzzy: {
18
maxEdits: 2
19
}
20
}
21
}
22
]
23
}
24
}
25
},
26
{
27
$limit: 5
28
},
29
{
30
$project: {
31
_id: 0,
32
name: 1,
33
summary: 1,
34
number_of_reviews: 1,
35
price: 1,
36
street: "$address.street",
37
}
38
}
39
]
Vamos detalhar cada etapa:
$Atlas Search: o estágio$searchusa os recursos do MongoDB Atlas Atlas Search para executar uma Atlas Search de texto completo com filtragem adicional.
índice: "searchPlaces" especifica o índice do Atlas Search a ser usado. Se o nome do índice fosse "padrão", não precisariamos especificá-lo aqui.
composto: Permite combinar vários critérios do Atlas Search. A query composta aqui é usada para filtrar os resultados do Atlas Search com base em critérios de texto e intervalo.
filtro: contém uma array de critérios de filtro aplicados aos resultados do Atlas Search.
faixa: filtra documentos em que o camponumber_of_reviews é maior ou igual a 50.
texto: o texto executa uma Pesquisa do Atlas de texto completo no campo summary com a consulta "Istambun". A opção difusa com maxEdits: 2 permite a correspondência difusa, o que significa que ele pode corresponder termos semelhantes a "Istambun" com até a duas edições de caracteres (inserções, exclusões ou substituições).
$limit: Limita o número de documentos retornados pela query para 5. Usar um limite é essencial para manter o desempenho.
$project: especifica quais campos incluir ou excluir no resultado final.
Basta executar este pipeline para obter os resultados. Veja:
Legado: MongoDB Compass com uma aggregation pipeline executada
Construindo um aplicativo Kotlin
Nosso aplicativo será desenvolvido em Kotlin com o Spring. Éimportante observar que não usaremos dados da Spring. Em vez disso, usaremos o Kotlin Sync Driver, especializado para comunicação entre o aplicativo e o MongoDB. O objetivo do nosso aplicativo é simples:
Forneça um endpoint que nos permita fazer solicitações e nos comunicar com o MongoDB Atlas.
Ideal, definimos nossa classeMongoConfig, que usará os valores de application.properties. Agora, crie a classe AirbnbEntity dentro do pacoteresources :
Como você pode ver, o método espera uma string de query e um minNumberReviewsint e retorna uma lista de AirbnbEntity. Essa lista é gerada por meio de um pipeline de agregação, que consiste em três estágios:
Estágio Atlas Search: Utiliza o operador$search para filtrar documentos com base na query e no número mínimo de revisões.
Estágio limite: restringe o resultado definido a um número máximo de documentos.
Estágio de projeção: Especifica quais campos incluir nos documentos devolvidos (esse estágio é opcional e incluído aqui apenas para ilustrar como usá-lo).
Aviso: dependendo do cenário, adicionar estágios após o estágio$searchpode afetar drasticamente o desempenho do aplicativo. Para obter mais detalhes, consulte nossos Docs sobre considerações de desempenho.
Criar um serviço
Para continuar com nosso projeto, vamos criar um pacote domaincom duas classes. O primeiro será o nossoAirbnb.
Mapear: Solicitação de pesquisa do Atlas Atlas do Postman
Conclusão
Neste tutorial, criamos um aplicativo Spring Boot baseado em Kotlin que usa o MongoDB Atlas Atlas Search para encontrar listagens do Airbnb de forma eficiente. Demonstramos como criar um índice do Atlas Search e implementar um aggregation pipeline para filtrar e pesquisar dados.
Enquanto nos concentramos na correspondência difusa e na filtragem de contagem de avaliações, o MongoDB Atlas Atlas Search oferece muitos outros recursos avançados, como pontuação personalizada e análise avançada de texto.
Explorar estes recursos adicionais pode melhorar ainda mais a funcionalidade do Atlas Search e fornecer resultados ainda mais refinados. O exemplo de código-fonte usado nesta série está disponível em Github.