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 .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Atlas Search Playground: experimentação fácil

Erik Hatcher7 min read • Published May 29, 2024 • Updated Jun 03, 2024
AtlasPesquisa
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty

O que é o Atlas Search e por que um playground?

OAtlas Search adiciona uma pesquisa lexical poderosa, relevante e de texto completo aos seus dados. Um simples índice do Atlas Search em sua coleção tornará todos os campos de string pesquisáveis em formas de texto completo e poderá fornecer melhorias drásticas na experiência do usuário ao encontrar conteúdo relevante rapidamente.
Portanto, embora um índicedynamic=truepossa lidar com a maioria dos tipos de dados e, especialmente, com os campos de string, há muitos desafios diferenciados da pesquisa de texto completo que podem exigir alguns ajustes de configuração, como o tratamento específico do idioma (singular/plural, diacríticos, palavras de parada etc.), gerenciamento de sinônimos, entidades específicas do domínio, terminologia e padrões. Há um processo de refinamento sem fim para entender como a pesquisa está sendo usada em seus dados e ajustar a configuração e as consultas de acordo.
Sempre foi uma prática útil e comum para nós, desenvolvedores, ter uma espécie de “playground” para ter uma parte isolada de dados de teste e um ambiente manual interativo para experimentar uma coisa por vez. Com o Atlas Search, geralmente crio uma collection de teste temporária com apenas um documento ou três que criei por meio da UI do Atlas. Em seguida, criarei um Atlas Search index para essa collection de teste e usarei o Testador de Pesquisa ou a ferramenta de pipeline de agregação na Atlas UI e Compass para experimentar várias consultas e ver quais correspondem e quais não. Isso envolve ajustar as consultas e a configuração do índice (e esperar que o índice seja reconstruído!) para me ajustar à medida que eu evoluo a análise do tempo de índice e a criação de cláusulas de tempo de consulta. Em seguida, adicionarei mais alguns documentos à collection de teste para ver como está a funcionar a relevância quando a correspondência em apenas um documento de teste funcionar bem. A partir daí, pegarei o que aprendi e copiarei/colarei/adaptarei a configuração e a consulta em meu aplicativo.
Como todas as etapas acima são abordadas por todos nós nas trincheiras da implementação de pesquisas, faz sentido criar um ambiente que elimine o Atlas Search da collection, importação de dados, definição de índice, tempo de construção de índices e teste de query. O resultado final fornece uma sandbox gratuita e fácil de usar para simplificar o processo de dados/índice/teste.
Apresentando o Atlas Search Playground...

O layout do Playground

Vamos direto ao ponto. Abra o link a seguir em outro navegador para Go em uma sandbox com o ambiente mostrado na captura de tela. Isso demonstra uma das funcionalidades mais legais do Atlas Search Playground: links compartilhados. Um link compartilhado engloba os dados, configuração e query compartilhados pelo criador.
Aperte emExecutar para ver a milagrra acontecer!
Isenção de responsabilidade: O Atlas Search Playground é um trabalho ativo em andamento no momento da escrita deste documento, e são prováveis algumas grandes melhorias nele. As capturas de tela mostradas aqui podem variar de acordo com a sua experiência. Afinal, trata-se de um playground - quem sabe onde estarão as pás e os veículos de brinquedo amanhã?
Primeiro exemplo de playground
Primeiro, observe os links de suporte à esquerda, que atualmente incluem links para a documentação do playground, um tutorial interativo do Search Playground, um link de feedback para que possamos continuar melhorando essa experiência de playground e um link de configuração para "Select Template " . Os modelos são exemplos de configuração do Playground integrados que você pode selecionar e executar para ter uma ideia de como alguns casos de uso comuns são resolvidos com o Atlas Search.
Vamos agora discutir cada painel em detalhes, na ordem lógica do fluxo de trabalho.

Fonte de dados

O painel Fonte de dados contém uma matriz JSON de documentos. Há um botão de importação útil se você tiver um pequeno conjunto de documentos em arquivo. Caso contrário, crie o seu à mão ou cole um pouco.
Uma array de apenas um único documento com um único campo é um bom início, para ter a impressão de executar uma query para ver se esse documento corresponde. No exemplo mostrado acima, o documento tem um campo de string name que contém a palavra "Playground. "
O painel Fonte de dados também tem uma seção separada para sinônimos.
Confira o modelo Pesquisa de catálogo para obter um exemplo de como conectar sinônimos na configuração do índice e aproveitá-los durante as queries. Selecione um modelo no menu à esquerda e escolha o modelo "Catalog Search ".

Index

A definição do índice do Atlas Search fica no painel Índice. Um bom ponto de partida é uma definição dinâmica que mapeia a maioria dos campos do documento. No exemplo mostrado acima, o name campo é mapeado automaticamente para o índice subjacente do Atlas Search usando o lucene.standard analisador padrão . Esse analisador padrão tokenizará os valores das string em suas letras minúsculas individuais “ ”,words, tornando os valores de texto da string geralmente pesquisáveis por partes semelhantes a palavras sem diferenciar maiúsculas de minúsculas.

Query

Forneça um pipeline de agregação contendo $search como o primeiro estágio neste painel. Este não é um mecanismo de pipeline de agregação MongoDB completo, embora seja compatível com os mecanismos comuns de que você precisa para lidar com os resultados da pesquisa.
No exemplo mostrado acima, a consulta é uma consulta text no campo name para o termo "pLaYgRoUnD", que não corresponde ao conteúdo original, a menos que o caso seja ignorado.

Resultados

Isso começa como uma array []vazia de resultados. PressioneExecutar para executar os estágios de query e colocar os resultados neste painel.
No exemplo mostrado acima, os resultados incluem o documento de entrada, mostrando que ele corresponde ao operador $search especificado; se não tivesse correspondido, uma array vazia seria retornada.
A live a seguir demonstra como o playground funciona: uma única fonte de dados de documento ( painel inferior esquerdo) é indexada por meio da configuração ( painel superior direito ) e consultada ( painel superior esquerdo ) por meio da mesma configuração, produzindo os resultados ( painel inferior- painel direito).
Animação do playground

Bons exemplos

Modelo de pesquisa de catálogo

O modelo “Catalog Search” (no link Selecionar modelo no lado esquerdo) cobre vários exemplos de casos de uso comuns: correspondência de valor exato (tipo de campotoken), suporte a campo numérico e exemplo de consulta de intervalo e uma pesquisa de campo de string aproveitando sinônimos. Há muita coisa acontecendo aqui neste pequeno exemplo de configuração e consulta. Não se esqueça de pressionar Executar!

Plurais que não correspondem

Aqui está um playground que demonstra como trabalhar em um desafio de consulta específico, pressione novamente Executar depois de carregado:
Depois de executar este playground, os resultados não são o que esperariamos.
Utilizando $searchMeta, mostra que a query não correspondeu
Um documento com "name": "The Atlas Search Playground" é indexado por meio de uma configuração básica de índice dinâmico. A pesquisa por searches no campo name...
1"text": {
2 "path": "name",
3 "query": "searches"
4}
...não corresponde ao documento indexado. Por que isso? O padrão ( oanalisadorlucene.standard) tokeniza nos limites básicos das palavras e coloca em minúsculas os termos indexados ou consultados — e é isso. Assim, search foi uma das palavras indexadas do camponamedaquele documento. A consulta de searches não faz não corresponder a nenhum termo indexado exatamente para uma querydoterm .
Aqui está um bom truque ao testar queries: Use $searchMeta para obter a contagem total, fazendo uma rápida verificação visual da expectativa de correspondência — sim (1) ao documento de amostra correspondido, ou não (0), não foi correspondência. Isso é mais conclusivo do que ver [] resultados vazios, especialmente se houver mais de um painel de resultados correspondentes e você não tiver certeza de quantos são.
Vamos brincar e fazer melhor com essa consulta que deve corresponder à semântica rudimentar do inglês e aos termos praticamente idênticos, lexicalmente. Vamos alterar nossa configuração para usar o analisadorlucene.english, que deriva o sufixo das palavras usando algumas regras centradas no inglês, como removersà direita e sufixoses, pois eles, geralmente, indicam plurais. Entre algumas outras heurísticas, ele também fará com que a busca por "country" e "countries" corresponda como seria de esperar.
A análise e a construção de queries são o cerne da correspondência de textos, e há muitos truques para fazer com que as queries correspondam aos campos de maneiras mais livres e interessantes, desde o tratamento de texto em uma variedade de idiomas à correspondência parcial de padrões de substring até a correspondência fonética.
E aqui está nosso playground ajustado, mostrando que o documento de teste agora corresponde à mesma consulta com falha inicial, graças a um ajuste no analisador de texto usado.
Utilizando $searchMeta, mostra que a query não corresponde após a alteração do analisador

facetas

O playground é um ótimo lugar para aprender e experimentar facetas. As facetas, no sentido $search, fornecem contexto de resultados de pesquisa adicional que consiste em contagens por bucket, em que um bucket é um valor de string ou um número ou faixa de datas. Isso é semelhante ao $group, embora muito mais eficiente em grandes conjuntos de resultados $search.
Indexamos documentos representando algumas frutas e um legume por meio de uma configuração que especifica o campo typedo documento comostringFacet:
1[
2 {
3 "_id": 1,
4 "name": "Apple",
5 "type": "fruit"
6 },
7 {
8 "_id": 2,
9 "name": "Asparagus",
10 "type": "vegetable"
11 },
12 {
13 "_id": 3,
14 "name": "Banana",
15 "type": "fruit"
16 }
17]
Agora, usando $searchMeta sem um operador (corresponde a todos os documentos), facetamos toda a coleção de três documentos no campo type e obtemos as contagens por buckettype :
1[
2 {
3 "count": {
4 "lowerBound": 3
5 },
6 "facet": {
7 "type_facet": {
8 "buckets": [
9 {
10 "_id": "fruit",
11 "count": 2
12 },
13 {
14 "_id": "vegetable",
15 "count": 1
16 }
17 ]
18 }
19 }
20 }
21]
Um operador de pesquisa poderia ser fornecido a $searchMeta, o que restringiria o conjunto de resultados e os valores das facetas seriam ajustados para serem precisos em todo o conjunto de resultados restringidos.

Relevância

Nosso exemplo final demonstra um cenário de sugestão conforme você digita para experimentar a correspondência detalhada e o ajuste de relevância.
Os dados são uma amostra de 500 documentos do exemplo da solução de pesquisa de sugestões relevantes enquanto você digita. Depois de executar esse playground, os resultados são as 10 melhores e mais relevantes correspondências para a consulta “matr” (como se alguém estivesse digitando, digamos, “matrix”).
Observe que neste playground há algumas seções comentadas na query. Ser capaz de comentar blocos da query ajuda a tentar várias opções. Nesse caso, os detalhes da pontuação e o realce das respostas são omitidos, mas facilmente incorporados ao descomentar esses blocos.
Playground sofisticado de relevância

Vamos ficar sérios

O tempo de reprodução acabou. É hora de cair na real com esse negócio de Atlas Search. No topo de cada playground há um link para Go para Atlas - clique nele para fazer login. Crie uma nova conta, se ainda não tiver uma, e leve o que aprender e aprimorou no playground para um persistente, ambiente Atlas pronto para produção.
Volte ao playground sempre que necessário para resolver os desafios de pesquisa, experimentar vários recursos ou criar um exemplo para compartilhar com outras pessoas.
Feliz jogo!

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

Pesquisa entre clusters usando Atlas Search e Data Federation


Jul 22, 2022 | 3 min read
exemplo de código

Trends Analyser


Sep 11, 2024 | 1 min read
Tutorial

Crie uma API CRUD com MongoDB, Typescript, Express, Prisma e Zod


Sep 04, 2024 | 10 min read
Tutorial

Usando o Confluent Cloud com o Atlas Stream Processing


Nov 19, 2024 | 5 min read
Sumário