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 .
Saiba por que o MongoDB foi selecionado como um líder no 2024 Gartner_Magic Quadrupnt()
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 mapa. Encontrar algo assim pode parecer difícil, não é mesmo? No entanto, há uma maneira de pesquisar informações com precisão usando o Atlas Search.
Neste tutorial, aprenderemos a criar um aplicação em Kotlin que utiliza a pesquisa de texto completo em um banco de dados 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 aplicação Kotlin 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 summary campo da collection para executar uma pesquisa 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 de pesquisa 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 a correspondência aproximada e as variações de manuseio nos termos de pesquisa.
Faixa : exploraremos o range operador especificamente com a condição gte (maiorou igual a) para o number_of_reviews campo . Isso nos permitirá fazer query e filtrar com base nas contagens de avaliações de forma eficaz.
Composto: O compound operador será utilizado para combinar as text fuzzyrange queries e em uma pesquisa mais complexa e refinada. Isso demonstrará como mesclar vários critérios para uma funcionalidade de pesquisa mais sofisticada.
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 do Airbnb. 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,sample_airbnb selecione o banco de banco de dados e a listingsAndReviews coleção (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 agregação 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:
$search: o $search estágio usa os recursos do Atlas Search para executar uma pesquisa de texto completo com filtragem adicional.
índice: "searchPlaces" especifica o índice de pesquisa a ser usado. Se o nome do índice fosse "padrão", não precisariamos especificá-lo aqui.
composto: permite combinar vários critérios de pesquisa. A consulta composta aqui é usada para filtrar os resultados da pesquisa com base em critérios de texto e intervalo.
filtro: contém uma array de critérios de filtro aplicados aos resultados da pesquisa.
faixa: filtra documentos em que o number_of_reviews campo é maior ou igual 50 a.
texto : o texto realiza uma pesquisa de texto summary completo no campo com a query "Istambun". A opção fuzzy com maxEdits: 2 permite a correspondência difusa, o que significa que pode corresponder termos semelhantes a "Istambun" com até duas edições de caracteres (inserções, exclusões ou substituições).
$limit: Limita o número de documentos retornados pela query 5 a. Usar um limite é essencial para manter o desempenho.
$ projeto: 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 aplicação 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 aplicação e o MongoDB. O objetivo do nosso aplicação é 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 de pesquisa : Utiliza o $search operador 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.