Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Model Context Protocol (MCP): O Futuro da Interação com Modelos de IA
    • Processamento Assíncrono: Os Desafios da Escalabilidade
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    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

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

    NoSql 7 de fevereiro de 20255 Mins Read

    Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL

    NoSql Sql 14 de janeiro de 20257 Mins Read

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 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
    • Model Context Protocol (MCP): O Futuro da Interação com Modelos de IA
    • Processamento Assíncrono: Os Desafios da Escalabilidade
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    Categorias
    • Arquitetura (15)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (2)
    • 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

    Facebook X (Twitter) Instagram LinkedIn

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

    Vá para versão mobile