Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    • A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia
    • Conheça os tipos de registros DNS: o guia completo sobre A, AAAA, NS, CNAME, MX, PTR, SOA, TXT, SRV, SPF e muito mais
    • Cache além do básico: por que LRU e TTL precisam andar juntos
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Utilizando MongoDB Atlas Search Full-Text Search com .NET

    Utilizando MongoDB Atlas Search Full-Text Search com .NET

    Jhonathan SoaresBy Jhonathan Soares14 de maio de 20245 Mins Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Este artigo é uma continuação do nosso tutorial sobre os primeiros passos com o MongoDB Atlas Search, os primeiros artigos são, neles você vai encontrar uma base mais teórica para o que iremos praticar neste artigo. Você pode encontrá-los aqui:

    • Primeiros passos com o MongoDB Atlas Search
    • Explorando o Atlas Vector Search do MongoDB Atlas

    O Que é Full Text Search?

    Antes de partirmos para a prática, vale ressaltar que o Full-Text search é uma técnica de busca que permite a recuperação de documentos que contêm palavras específicas ou frases inteiras. Diferente de buscas simples por palavra-chave, o full text search considera a relevância dos resultados, permitindo buscas mais complexas e precisas.

    No MongoDB Atlas Search, essa funcionalidade é implementada através do uso de índices específicos que permitem a busca textual em grandes volumes de dados de maneira eficiente. Esses índices são configurados para analisar e indexar o conteúdo dos documentos, facilitando a recuperação rápida das informações desejadas.

    Bora pro código?

    Antes de começarmos, certifique-se de ter configurado o MongoDB Atlas conforme descrito no artigo anterior, configurado o dataset e de ter clonado o repositório SeeSharpMovies, neste caso iremos utilizar a base de dados de filmes para este projeto. Você precisará do .NET SDK instalado em sua máquina, eu estou utilizando o .Net 8.0. O repositório oficial deste artigo é o SeeSharpMovies direto da MongoDB

    Agora, vamos explorar na prática como utilizar a funcionalidade de full text search do Atlas Search em aplicações .NET. O MongoDB Atlas Search é uma poderosa ferramenta que permite a integração de capacidades avançadas de busca textual em suas aplicações, aproveitando a robustez e flexibilidade do MongoDB.

    Antes de mais nada, precisamos criar índices de pesquisa dentro do Atlas. Esses índices permitem recursos do full-text search dentro em nosso banco de dados. Precisamos também especificar quais campos desejamos indexar. O Atlas Search oferece suporte a índices dinâmicos, que se aplicam a todos os campos e se adaptam a qualquer alteração no formato do documento. Mas para este tutorial, adicionaremos um índice de pesquisa para um campo específico, “título”.

    1 – Dentro do Atlas, clique em “Browse Collection” para abrir o explorador de dados e visualizar os dados de amostra recém-carregados.

    2- Selecione a guia “Atlas Search” na parte superior.

    3 –

    • Clique no botão verde “Create Search Index” para carregar o assistente de criação de índice.
    • Selecione Editor Visual e clique em “Avançar”.
    • Dê um nome ao seu índice. Eu deixei o nome padrão, “default”
    • Para “Database and Collection”, selecione “sample_mflix” para expandir o banco de dados e selecione a coleção “movies”, eu coloquei o nome da colection na importação como “embedded_movies”, mas aqui é uma questão apenas semântica, fique a vontade para colocar o nome que quiser. Em seguida, clique em “Avançar”.

    4 – Clique em “Refine Your Index” e depois em “Add Field Mapping”, pois iremos selectionar o campo “Title” como “Autocomplete”, isto vai configurar o nosso índice para fazer uma busca no título do filme, utilizando a busca por autocomplete. Você pode ver mais sobre os tipos de dados clicando aqui.

    Após isto, você pode criar o seu índice. O processo leva alguns segundos, porém pode levar mais tempo de acordo com o tamanho da base e a complexidade do índice criado.

    Implementando funcionalidade em .Net

    Agora que o banco de dados está configurado para suportar o Atlas Search com nossos novos índices, é hora de atualizar o código no aplicativo para suportar a pesquisa. O código possui uma interface e serviço para conversar com o Atlas usando o Driver MongoDB C# que pode ser encontrado na pasta “Services”. O médoto MovieSearchByText vai ser responsável pela busca de filmes no nosso banco de dados utilizando o índice que acabamos de criar.

    public IEnumerable<Movie> MovieSearchByText(string textToSearch)
    {             
    // define fuzzy options
      SearchFuzzyOptions fuzzyOptions = new SearchFuzzyOptions()
      {
        MaxEdits = 1,
        PrefixLength = 1,   
        MaxExpansions = 256
      };
      
      // define and run pipeline
      var movies = _movies.Aggregate().Search(Builders<Movie>.Search.Autocomplete(movie => movie.Title, 
      textToSearch, fuzzy: fuzzyOptions), indexName: "title").Project<Movie>(Builders<Movie>.Projection
      .Exclude(movie => movie.Id)).ToList();
      return movies;
    }       
    

    O método conta com a Pesquisa difusa ou Fuzzy Search permite a busca por correspondência aproximada com um termo de pesquisa, o que pode ser útil com erros de digitação ou ortografia. Portanto, configuramos algumas opções de pesquisa difusa aqui, como quão próximos do termo correto os caracteres precisam estar e quantos caracteres no início devem corresponder exatamente.

    A busca via Atlas Search é realizada usando a função de agregação $search, então chamamos .Aggregate() na coleção de filmes e depois chamamos o método “Search“`. Já o .Project() é opcional, mas vamos incluí-lo porque não usamos o campo _id em nossa aplicação. Portanto, por questões de desempenho, é sempre bom excluir quaisquer campos que você sabe que não precisarão ser retornados.

    O projeto conta já com uma implementação básica de front-end utilizando blazor, que eu não vou cobrir neste artigo, mas que você pode encontrar aqui MongoDB Atlas Search with .NET Blazor for Full-Text Search

    Excelente! Agora você tem uma aplicação .Net com funcionalidade de pesquisa adicionada e um bom ponto de partida para usar a pesquisa de texto completo em seus projetos daqui para frente.

    Se quiser saber mais sobre o Atlas Search, incluindo mais recursos do que apenas o preenchimento automático, você pode fazer uma incrível Oficina de pesquisa do Atlas.

    Fonte: https://www.mongodb.com/developer/languages/csharp/atlas-search-with-csharp/

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    Cache além do básico: por que LRU e TTL precisam andar juntos

    Arquitetura NoSql 7 de outubro de 20259 Mins Read

    Potencializando o MongoDB com IA: Conheça o MCP Server da MongoDB

    IA NoSql 12 de junho de 20255 Mins Read

    MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples

    NoSql 7 de fevereiro de 20255 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    Categorias
    • Arquitetura (31)
      • Microsserviços (3)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (93)
      • NoSql (60)
      • Sql (38)
    • Boas práticas (35)
      • Gestão & Produtividade (5)
      • Metodologias Ágeis (6)
    • Cursos (53)
    • Dicas (108)
    • Front-End (92)
    • IA (8)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Código Simples no Facebook
    Código Simples no Facebook
    • Popular
    • Recente

    1000 livros gratuitos sobre programação!

    12 de fevereiro de 2016

    Google lança versão “invisível” do reCAPTCHA!

    10 de março de 2017

    Mini curso de HTML5 oferecido pela Microsoft

    30 de janeiro de 2014

    O que significa ( !important ) na declaração do CSS ?

    5 de fevereiro de 2014

    Programa para supercompactar arquivos. KGB Archiver.

    6 de fevereiro de 2014

    Observabilidade para agentes: por que logs e traces tradicionais já não bastam

    23 de abril de 2026

    Context engineering: quando o problema deixa de ser prompt e vira arquitetura

    16 de abril de 2026

    Clean Code (2ª edição): o que mudou e o que continua valendo

    12 de fevereiro de 2026

    Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha

    4 de fevereiro de 2026

    Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis

    30 de outubro de 2025
    Nosso Feed
    • RSS - Posts
    Fique por dentro

    Digite seu endereço de email para assinar este blog e receber notificações de novas publicações por email.

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile