Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Pesquisa de texto

Nesta página

  • Pré-requisitos
  • Conecte-se a um MongoDB deployment
  • Criar o índice de texto
  • Executar Atlas Searchde texto
  • Pontuação de texto
  • Especifique uma opção de Atlas Search de texto

O MongoDB oferece suporte a operações de query que realizam uma pesquisa de texto no conteúdo da string em documentos. Para realizar uma pesquisa de texto, o MongoDB usa um índice de texto e o operador de query $text . Para saber mais sobre pesquisas de texto, consulte Pesquisa de texto no manual do servidor.

O driver fornece o método assistente Filters.text() para facilitar a criação de filtros de query de pesquisa de texto.

Você deve configurar os seguintes componentes para executar os exemplos de código neste guia:

  • Uma test.restaurants coleção preenchida com documentos do restaurants.json arquivo nos ativos Github de documentação do .

  • As seguintes declarações de importação:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Indexes;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.TextSearchOptions;
import com.mongodb.client.model.Projections;
import org.bson.Document;

Importante

Este guia usa implementações personalizadas de Subscriber , que são descritas no guia Amostra de implementações personalizadas de assinantes .

Primeiro, conecte a um MongoDB deployment e declare e defina as instâncias MongoDatabase e MongoCollection .

O código a seguir se conecta a uma MongoDB deployment standalone em execução em localhost na porta 27017. Em seguida, define a variável database para fazer referência ao banco de dados test e a variável collection para fazer referência à coleção restaurants :

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .

Para criar um índice de texto, utilize o auxiliar estático Indexes.text() para criar uma especificação para um índice de texto e passar a especificação para o método MongoCollection.createIndex() para criar o índice.

O exemplo seguinte cria um índice de texto no campo name para a coleção restaurants :

MongoCollection<Document> collection = database.getCollection("restaurants");
collection.createIndex(Indexes.text("name")).subscribe(new PrintToStringSubscriber<String>());

Para executar o Atlas Search de texto , use o método auxiliar Filters.text() para especificar o filtro de query do Atlas Search de texto .

Por exemplo, o código a seguir executa uma pesquisa de texto no campo name para corresponder às strings "bakery" ou "coffee":

collection
.countDocuments(Filters.text("bakery coffee"))
.subscribe(new PrintSubscriber<Long>("Text search matches: %s"));
Text search matches: [2]

Para cada documento correspondente, a pesquisa de texto atribui uma pontuação que representa a relevância de um documento para o filtro de query de pesquisa de texto especificado. Para retornar e classificar por pontuação, use o operador $meta no documento de projeção e a expressão de classificação:

collection.find(Filters.text("bakery cafe"))
.projection(Projections.metaTextScore("score"))
.sort(Sorts.metaTextScore("score"))
.subscribe(new PrintDocumentSubscriber());

O auxiliar Filters.text() pode aceitar várias opções de texto do Atlas Search . O driver fornece a classe TextSearchOptions para especificar essas opções.

Por exemplo, o seguinte Atlas Search de texto especifica a opção de idioma do Atlas Search de texto ao executar um Atlas Search de texto para a palavra "cafe":

collection.countDocuments(
Filters.text("cafe", new TextSearchOptions().language("english"))
).subscribe(new PrintSubscriber<Long>("Text search matches (english): %s"));
Text search matches (english): [1]

Para saber mais sobre o texto Atlas Search, consulte as seguintes seções no manual do MongoDB Server :

Voltar

readPreference