Menu Docs

Página inicial do DocsIniciar e gerenciar o MongoDBMongoDB Atlas

texto

Nesta página

  • Definição
  • Sintaxe
  • Campos
  • Exemplos
  • Exemplo básico
  • Exemplos de Fuzzy
  • Exemplos de Sinônimos

O operador do text executa uma pesquisa de texto completo utilizando o analisador que você especifica na configuração de índice. Se você omitir um analisador, o operador text utilizará o analisador padrão padrão.

text tem a seguinte sintaxe:

{
$search: {
"index": <index name>, // optional, defaults to "default"
"text": {
"query": "<search-string>",
"path": "<field-to-search>",
"fuzzy": <options>,
"score": <options>,
"synonyms": "<synonyms-mapping-name>"
}
}
}
Campo
Tipo
Descrição
necessidade
query
cadeia de caracteres ou matriz de cadeias de caracteres
A string ou strings para pesquisar. Se houver vários termos em uma string, o Atlas Search também procurará uma correspondência para cada termo na string separadamente.
Obrigatório
path
cadeia de caracteres ou matriz de cadeias de caracteres
O campo ou campos indexados a serem pesquisados. Você também pode especificar um caminho curinga para pesquisa. Consulte construção de caminho para obter mais informações.
Obrigatório
fuzzy
documento
Ative a procurar difusa. Encontre strings semelhantes ao termo ou termos de pesquisa. Você não pode usar fuzzy com synonyms.
Opcional
fuzzy.maxEdits
inteiro
Número máximo de edições de caracteres únicos necessárias para corresponder ao termo de pesquisa especificado. O valor pode ser 1 ou 2. O valor padrão é 2. Utiliza a distância de Damerau-Levenshtein.
Opcional
fuzzy.prefixLength
inteiro
Número de caracteres no início de cada termo no resultado que deve corresponder exatamente. O valor padrão é 0.
Opcional
fuzzy.maxExpansions
inteiro
O número máximo de variações a serem geradas e pesquisadas. Este limite se aplica por token. O valor padrão é 50.
Opcional
score
documento

A pontuação atribuída aos resultados correspondentes dos termos de procurar. Use uma das opções seguintes para modificar a pontuação:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado usando a expressão fornecida.

Observação

Quando você faz query de valores em arrays, o Atlas Search não altera a pontuação dos resultados correspondentes com base no número de valores dentro da array que correspondeu à query. A pontuação seria igual a uma única correspondência, independentemente do número de correspondências dentro de uma array.

Opcional
synonyms
string

Obrigatório para executar queries usando sinônimos.

Nome da definição de mapeamento de sinônimos na definição do índice. O valor não pode ser uma string vazia. Não é possível usar fuzzy com synonyms.

text consultas que usam sinônimos procuram uma conjunção (E) de tokens de consulta. text consultas que não utilizam a pesquisa de sinônimos para uma disjunção (OU) de tokens de consulta. Para executar consultas text que usam sinônimos e também procurar uma disjunção (OU) de tokens de consulta, use o operador composto . Por exemplo:

"compound": {
"should": [
{
"text": {
"path": "a",
"query": "my query",
"synonyms": "mySynonyms"
}
},
{
"text": {
"path": "a",
"query": "my query"
}
}
]
}

Observação

O tempo que o Atlas Search leva para executar queries que usam mapeamentos de sinônimos depende do número e do tamanho dos documentos na collection de fontes de sinônimos. Uma query que usa um mapeamento de sinônimos baseado em pouquíssimos documentos sinônimos pode ser mais rápida do que uma query que usa um mapeamento de sinônimos baseado em muitos documentos sinônimos.

Opcional

Os exemplos Básico e Fuzzy abaixo utilizam a coleção de movies no banco de dados do sample_mflix . Depois de carregar o conjunto de dados de amostra em seu cluster, crie o índice do Atlas Search no campo title e execute as queries de exemplo em seu cluster.

Dica

Se você já carregou o conjunto de dados de amostra, siga o tutorial Iniciar com Atlas Search para criar uma definição de índice e executar queries de Atlas Search.

user_feedback.comments exemplos de Synonyms abaixo user_feedback.synonyms as coleções e a definição de índice descrita em Definir Mapeamentos de Sinônimo. Após user_feedback.synonyms as user_feedback.comments e configurar a definição de índice para a coleção, você pode executar as queries abaixo.

O exemplo do Atlas Search a seguir usa o operador text para procurar o campo title na coleção movies para o termo surfer.

Exemplo

A query a seguir procura o campo title para o termo surfer. Isso inclui um estágio $project para:

  • Excluir todos os campos, exceto title

  • Adicione um campo chamado score

db.movies.aggregate([
{
$search: {
"text": {
"path": "title",
"query": "surfer"
}
}
},
{
$project: {
"_id": 0,
"title": 1,
score: { $meta: "searchScore" }
}
}
])

A query acima retorna os seguintes resultados:

{ "title" : "Soul Surfer", "score" : 4.572484970092773 }
{ "title" : "Little Surfer Girl", "score" : 3.9323642253875732 }
{ "title" : "Fantastic 4: Rise of the Silver Surfer", "score" : 2.520784616470337 }

As queries a seguir usam o operador text para pesquisar o campo title na coleção movies para os termos que estão dentro de uma variação de caractere de cada termo na frase query naw yark. O Atlas Search retorna resultados diferentes dependendo se você usa as opções fuzzy padrão ou define os campos maxExpansions, prefixLength ou maxEdits.

Clique nas abas a seguir para ver exemplos de query que usam opções padrão e especificadas:

Os exemplos seguintes utilizam o operador text para pesquisar o campo comments na coleção do user_feedback.comments. O Atlas Search retorna resultados baseado no tipo de mapeamento na coleção de origem do sinônimo, user_feedback.synonyms, especificado na definição de mapeamento do sinônimo do índice para a coleção do user_feedback.comments.

Observação

Para saber mais sobre as coleções do user_feedback.comments e user_feedback.synonyms e a definição de índice para a coleção do user_feedback.comments, consulte Exemplo na página Definir Mapeamentos de Sinônimo em Seu Índice de Pesquisa do Atlas .

A query a seguir procura o campo comments para a palavra dress. Ela usa o mapeamento de sinônimos chamado mySynonyms no índice da collection para também procurar palavras configuradas para serem sinônimos da palavra dress.

db.comments.aggregate([
{
$search: {
"text": {
"path": "comments",
"query": "dress",
"synonyms": "mySynonyms"
}
}
}
])

A query anterior retorna os seguintes resultados:

{
"_id" : ObjectId("60e5f7d65f32d78cb3a3cc7a"),
"type" : "apparel store",
"comments" : "Beautiful apparel for the bride."
}

A Atlas Search retorna o documento acima porque dress está configurado para ser sinônimo de apparel e attire usando mapeamentos de equivalent na coleção de origem de sinônimos, user_feedback.synonyms. O Atlas Search retorna o documento acima para pesquisas em apparel e attire também porque as três palavras estão configuradas para serem sinônimos uma da outra na coleção de fontes de sinônimos.

A query a seguir procura o campo comments para a palavra boat. Ela usa o mapeamento de sinônimos chamado mySynonyms no índice da collection para também procurar palavras configuradas para serem sinônimos da palavra boat.

db.comments.aggregate([
{
$search: {
"text": {
"path": "comments",
"query": "boat",
"synonyms": "mySynonyms"
}
}
}
])

A query anterior retorna os seguintes resultados:

{
"_id" : ObjectId("60e5f7e25f32d78cb3a3cdc4"),
"type" : "recreation rental",
"comments" : "Sails as well as the day it was made."
}

O Atlas Search retorna o documento acima porque boat está configurado para considerar as palavras boat, vessel e sail como sinônimos usando explicit mapeamentos na collection de fontes de sinônimos, user_feedback.synonyms. No entanto, o Atlas Search não retorna quaisquer resultados para uma query no vessel ou sail, pois nenhuma das palavras está configurada para considerar qualquer uma das outras palavras como sinônimos.

← extensão
curinga →