Pesquisa de texto
Nesta página
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.
Pré-requisitos
Você deve configurar os seguintes componentes para executar os exemplos de código neste guia:
Uma
test.restaurants
coleção preenchida com documentos dorestaurants.json
arquivo nos ativos Github de documentação do .As seguintes declarações de importação:
import org.mongodb.scala._ import org.mongodb.scala.model._
Observação
Este guia usa as implicações do Observable
como abordadas no Quick Start Primary.
Conecte-se a um MongoDB deployment
Primeiro, conecte a um MongoDB deployment e, em seguida, 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
:
val mongoClient: MongoClient = MongoClient() val database: MongoDatabase = mongoClient.getDatabase("test") val collection: MongoCollection[Document] = database.getCollection("restaurants")
Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .
Criar o índice de texto
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
em documentos na coleção:
collection.createIndex(Indexes.text("name")).printResults()
Executar Atlas Searchde texto
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")).printResults("Text search matches: ")
Text search matches: [2]
Pontuação de texto
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")) .printResults()
Especifique uma opção de Atlas Search de texto
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", TextSearchOptions().language("english"))) .printResults("Text search matches (english): ")
Text search matches (english): [1]
Para saber mais sobre o texto Atlas Search, consulte as seguintes seções no manual do MongoDB Server :