Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

text

Nesta página

  • Definição
  • Sintaxe
  • Campos
  • Exemplos
  • Exemplo básico
  • Exemplos de Fuzzy
  • corresponder all
  • Exemplos de Sinônimos
  • Combinar any usando o mapeamento equivalent
  • Combinar any usando o mapeamento explicit
  • Corresponder all usando sinônimos

O operador text executa uma pesquisa de texto completo usando o analisador que você especifica na configuração de índice. Se você omitir um analisador, o operador text utilizará o analisador 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>,
"matchCriteria": "any" | "all"
"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 um único caractere 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 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
Número máximo de variações para gerar e pesquisar. Este limite se aplica por token. O valor padrão é 50.
Opcional
matchCriteria
string

Critérios a serem usados para corresponder aos termos na query. O valor pode ser um dos seguintes:

  • any - para retornar documentos que contenham qualquer um dos termos do campo query.

  • all - para retornar somente documentos que contenham todos os termos do campo query.

Se omitido, o padrão é any.

Opcional, recomendado
score
documento

Pontuação atribuída aos resultados correspondentes do termo de pesquisa. 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.

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.

Sempre use matchCriteria ao usar synonyms. Para queries text que usam synonyms sem matchCriteria, o Atlas Search corresponde apenas a documentos onde todos os termos estão exatamente na mesma posição que a query. Esse comportamento pode mudar no futuro e os resultados de sua query também podem mudar.

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 nesta página usam a coleção movies no banco de dados sample_mflix. Depois de carregar o conjunto de dados de amostra em seu cluster, crie o índice do Atlas Search com mapeamentos dinâmicos e execute as consultas de exemplo em seu cluster. Você também deve definir uma coleção de mapeamento synonyms no índice, conforme mostrado nos Exemplos de Definição de Índice para experimentar os exemplos de sinônimos 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 pesquisa 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" }
}
}
])
{ "title" : "Soul Surfer", "score" : 4.518949508666992 }
{ "title" : "Little Surfer Girl", "score" : 3.8856077194213867 }
{ "title" : "Fantastic 4: Rise of the Silver Surfer", "score" : 2.489800453186035 }

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:

Exemplo

A query a seguir procura no campo title a frase naw yark. Ela usa as opções padrão do fuzzy, nas quais:

  • maxEdits permite uma variação de até dois caracteres de cada termo na frase fornecida para corresponder a query a um documento.

  • maxExpansions considera até cinquenta termos semelhantes para cada termo em naw yark para encontrar correspondências.

  • prefixLength está desativado.

A consulta também inclui um estágio $limit para limitar a saída a 10 resultados e um estágio $project para:

  • Excluir todos os campos, exceto title

  • Adicione um campo chamado score

db.movies.aggregate([
{
$search: {
"text": {
"path": "title",
"query": "naw yark",
"fuzzy": {}
}
}
},
{
$limit: 10
},
{
$project: {
"_id": 0,
"title": 1,
score: { $meta: "searchScore" }
}
}
])
{ "title" : "New York, New York", "score" : 3.6040148735046387 }
{ "title" : "New York", "score" : 3.323730945587158 }
{ "title" : "New York Stories", "score" : 2.8579015731811523 }
{ "title" : "New York Minute", "score" : 2.8579015731811523 }
{ "title" : "Synecdoche, New York", "score" : 2.8579015731811523 }
{ "title" : "New York Doll", "score" : 2.8579015731811523 }
{ "title" : "Little New York", "score" : 2.8579015731811523 }
{ "title" : "Escape from New York", "score" : 2.506596088409424 }
{ "title" : "Naked in New York", "score" : 2.506596088409424 }
{ "title" : "Autumn in New York", "score" : 2.506596088409424 }

Exemplo

A query a seguir pesquisa no campo title termos que estão dentro de um caractere de cada termo na string naw yark. Ele usa:

  • O campo maxEdits para indicar que somente uma variação de caractere é permitida para cada termo para corresponder a query a um documento.

  • O campo maxExpansions para indicar que até cem termos semelhantes para naw e cem termos semelhantes a yark devem ser considerados ao associar a query a um documento.

A consulta também inclui um estágio $limit para limitar a saída a 10 resultados e um estágio $project para:

  • Excluir todos os campos, exceto title

  • Adicione um campo chamado score

db.movies.aggregate([
{
$search: {
"text": {
"path": "title",
"query": "naw yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
},
{
$limit: 10
},
{
$project: {
"_id": 0,
"title": 1,
score: { $meta: "searchScore" }
}
}
])
{ "title" : "New York, New York", "score" : 4.38106107711792 }
{ "title" : "New York", "score" : 4.040346145629883 }
{ "title" : "New York Stories", "score" : 3.4740817546844482 }
{ "title" : "New York Minute", "score" : 3.4740817546844482 }
{ "title" : "Synecdoche, New York", "score" : 3.4740817546844482 }
{ "title" : "New York Doll", "score" : 3.4740817546844482 }
{ "title" : "Little New York", "score" : 3.4740817546844482 }
{ "title" : "Escape from New York", "score" : 3.047032356262207 }
{ "title" : "Naked in New York", "score" : 3.047032356262207 }
{ "title" : "Autumn in New York", "score" : 3.047032356262207 }

Exemplo

A query a seguir pesquisa no campo title termos que estão dentro de um caractere de cada termo na string naw yark. Ele usa:

  • O campo maxEdits para indicar que somente uma variação de caractere é permitida para corresponder a query a um documento.

  • O campo prefixLength para indicar que os dois primeiros caracteres de cada termo na string naw yark não podem ser alterados para corresponder a query a um documento.

A consulta também inclui um estágio $limit para limitar a saída a 8 resultados e um estágio $project para:

  • Excluir todos os campos, exceto _id e title

  • Adicione um campo chamado score

db.movies.aggregate([
{
$search: {
"text": {
"path": "title",
"query": "naw yark",
"fuzzy": {
"maxEdits": 1,
"prefixLength": 2,
}
}
}
},
{
$limit: 8
},
{
$project: {
"_id": 1,
"title": 1,
score: { $meta: "searchScore" }
}
}
])
{ "_id" : ObjectId("573a1396f29313caabce5646", "title" : "The Longest Yard", "score" : 2.914206027984619 }
{ "_id" : ObjectId("573a13aff29313caabd31ed8", "title" : "The Longest Yard", "score" : 2.914206027984619 }
{ "_id" : ObjectId("573a13b7f29313caabd4ad8b", "title" : "Stomp the Yard", "score" : 2.914206027984619 }
{ "_id" : ObjectId("573a13eaf29313caabdcf410", "title" : "Naz & Maalik", "score" : 2.5460386276245117 }
{ "_id" : ObjectId("573a1393f29313caabcddbed", "title" : "La nao capitana", "score" : 2.1892051696777344 }
{ "_id" : ObjectId("573a1399f29313caabcee781", "title" : "Kabhi Haan Kabhi Naa", "score" : 1.9200985431671143 }
{ "_id" : ObjectId("573a13a2f29313caabd0b815", "title" : "Kaho Naa... Pyaar Hai", "score" : 1.9200985431671143 }
{ "_id" : ObjectId("573a13a7f29313caabd1b5c0", "title" : "Oysters at Nam Kee's", "score" : 1.9200985431671143 }

A consulta a seguir usa o operador text para pesquisar o campo plot na coleção movies para todos os termos na string de consulta automobile race.

db.movies.aggregate([
{
"$search": {
"text": {
"path": "plot",
"query": "automobile race",
"matchCriteria": "all"
}
}
},
{
"$limit": 20
},
{
"$project": {
"_id": 0,
"plot": 1,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
[
{
plot: 'A young driver, Speed Racer, aspires to be champion of the racing world with the help of his family and his high-tech Mach 5 automobile.',
title: 'Speed Racer',
score: 6.122188568115234
},
{
plot: 'A gorgeous young automobile fanatic--and front to the hottest unsigned band on the West coast--finds herself caught up in illegal drag-racing competitions organized by exotic car fanatics.',
title: 'Redline',
score: 5.497724533081055
},
{
plot: 'When a popular daredevil proposes an automobile race across three continents, his arch rival vows to beat him, while an ambitious female reporter has her own plans for victory.',
title: 'The Great Race',
score: 5.282209396362305
}
]

O Atlas Search retorna documentos que contêm os termos automobile e race em qualquer lugar no campo plot.

Os exemplos a seguir usam o operador text para pesquisar o campo plot no namespace sample_mflix.movies. O Atlas Search retorna resultados com base no tipo de mapeamento na coleção de origem de sinônimos, synonymous_terms, especificado na definição de mapeamento de sinônimos do índice para a coleção sample_mflix.movies.

A query a seguir procura no campo plot a frase attire. 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.movies.aggregate([
{
"$search": {
"text": {
"path": "plot",
"query": "attire",
"synonyms": "my_synonyms",
"matchCriteria": "any"
}
}
},
{
"$limit": 5
},
{
"$project": {
"_id": 0,
"plot": 1,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
[
{
plot: 'The Sanguiwon are responsible for the attire worn by royalty. Dol-Seok (Han Suk-Kyu) is the best master artisan in charge of royal attire. He views set rules as paramount to his job. ...',
title: 'The Royal Tailor',
score: 15.825017929077148
},
{
plot: "During Christmas' holidays, the children of a village split in two gang to play a snowball war. But that half-tone war scattered some bitterness and make more difficult the mutual attirance...",
title: 'La guerre des tuques',
score: 11.863945007324219
},
{
plot: 'The Dress is a tale filled with sex, violence, comedy and drama as it follows the life of a dress. Conceived under a cloud of frustration and despair, the dress serves as the hub in a great...',
title: 'The Dress',
score: 5.061710834503174
},
{
plot: "Boardroom and dressing-room intrigues spill on to the field at the Australian Rules football club.",
title: 'The Club',
score: 3.991994857788086
},
{
plot: 'Deserting soldier dresses as a woman to escape detection; liking the female role he goes to a dance with another soldier and is exposed.',
title: 'The Triple Echo',
score: 3.5169785022735596
}
]

O Atlas Search retorna os documentos que contêm os termos attire, apparel e dress porque configuramos todos esses termos para serem sinônimos equivalent na coleção de sinônimos, synonymous_terms, o que significa que todos esses termos são sinônimos uns dos outros. Portanto, o Atlas Search retorna documentos semelhantes para pesquisas em dress e attire.

A query a seguir pesquisa no campo plot a frase boat race. Ele usa o mapeamento de sinônimos chamado my_synonyms no índice da coleção para também pesquisar palavras configuradas para serem sinônimos das palavras boat e race.

db.movies.aggregate([
{
"$search": {
"text": {
"path": "plot",
"query": "boat race",
"synonyms": "my_synonyms",
"matchCriteria": "any"
}
}
},
{
"$limit": 10
},
{
"$project": {
"_id": 0,
"plot": 1,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
[
{
plot: 'A man is picked up by a fishing boat, bullet-riddled and suffering from amnesia, before racing to elude assassins and regain his memory.',
title: 'The Bourne Identity',
score: 15.405073165893555
},
{
plot: 'A few friends builds a sailing boat together. They plan trips and during the completion of the boat marriages crumble, new relations blossom and the boat burns. They rebuild it and the ...',
title: 's/y Glèdjen',
score: 13.40434741973877
},
{
plot: 'Famous motor-racing champion Joe Greer returns to his hometown to compete in a local race. He discovers his younger brother has aspirations to become a racing champion and during the race ...',
title: 'The Crowd Roars',
score: 10.466073036193848
},
{
plot: 'The claustrophobic world of a WWII German U-boat; boredom, filth, and sheer terror.',
title: 'Das Boot',
score: 10.304922103881836
},
{
plot: 'Several survivors of a torpedoed ship find themselves in the same boat with one of the men who sunk it.',
title: 'Lifeboat',
score: 9.776729583740234
},
{
plot: 'A fishing-boat crew takes on a dangerous commission to smuggle a group of illegal immigrants from China to Korea.',
title: 'Haemoo',
score: 9.532430648803711
},
{
plot: 'A land baron tries to reconnect with his two daughters after his wife is seriously injured in a boating accident.',
title: 'The Descendants',
score: 9.300044059753418
},
{
plot: 'A weekend boating party turns into a nightmare for a group of young Londoners when they stumble upon a terrifying secret hidden in the reeds.',
title: 'The Reeds',
score: 9.078716278076172
},
{
plot: 'Documentary telling the true story of the sinking of the liner Laconia by a German U-boat in 1942 through the eyes of six survivors.',
title: 'The Sinking of the Laconia',
score: 9.078716278076172
},
{
plot: 'Sabotage efforts damage an international air race.',
title: 'Those Magnificent Men in Their Flying Machines or How I Flew from London to Paris in 25 hours 11 minutes',
score: 8.983794212341309
}
]

O Atlas Search retorna documentos que contêm o termo boat, vessel, ou sail, ou race, rally, ou contest porque configuramos boat para ser um sinônimo explicit ou vessel e sail e configuramos race para ser um explicit sinônimo de rally e contest. O Atlas Search não retorna nenhum resultado para uma query em vessel e sail ou rally e contest porque não configuramos essas palavras para considerar qualquer uma das outras palavras como sinônimos.

A query a seguir usa o operador text para pesquisar o campo plot na coleção movies para todos os termos na string de query automobile race.

O Atlas Search retorna resultados com base no tipo de mapeamento na coleção de origem de sinônimos, synonymous_terms, especificado na definição de mapeamento de sinônimos do índice para a coleção sample_mflix.movies.

db.movies.aggregate([
{
"$search": {
"text": {
"path": "plot",
"query": "automobile race",
"matchCriteria": "all",
"synonyms": "my_synonyms"
}
}
},
{
"$limit": 20
},
{
"$project": {
"_id": 0,
"plot": 1,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
[
{
plot: 'A young driver, Speed Racer, aspires to be champion of the racing world with the help of his family and his high-tech Mach 5 automobile.',
title: 'Speed Racer',
score: 17.354578018188477
},
{
plot: 'A gorgeous young automobile fanatic--and front to the hottest unsigned band on the West coast--finds herself caught up in illegal drag-racing competitions organized by exotic car fanatics.',
title: 'Redline',
score: 16.085742950439453
},
{
plot: 'When a popular daredevil proposes an automobile race across three continents, his arch rival vows to beat him, while an ambitious female reporter has her own plans for victory.',
title: 'The Great Race',
score: 15.087226867675781
},
{
plot: 'A race car driver becomes a champion with a Volkswagen Beetle with a mind of its own.',
title: 'The Love Bug',
score: 5.1777167320251465
},
{
plot: 'A wide variety of eccentric competitors participate in a wild and illegal cross-country car race.',
title: 'The Cannonball Run',
score: 5.041530609130859
},
{
plot: 'The original characters from the first Cannonball movie race across the country once more in various cars and trucks.',
title: 'Cannonball Run II',
score: 4.67281436920166
},
{
plot: 'After a tied 1st place in a local stunt race, two drivers start a contest to decide who of them will own the prize, a dune buggy. But when a mobster destroys the car, they are determined to get it back.',
title: "Watch Out, We're Mad",
score: 4.500225067138672
},
{
plot: 'Four teenagers are killed in a car accident. Two of the teenagers refuse to go with "The Grim Reaper" and a race between life and death ensues!',
title: 'Soultaker',
score: 4.455573081970215
},
{
plot: "The driver races to locate a kidnapped victim locked in the trunk of an abandoned car somewhere on the water's edge. Linked to her only by cell phone, the driver narrows in on her location in a desperate race against time and tide.",
title: 'Hostage',
score: 4.429774284362793
},
{
plot: 'Race car driver Lucky Jackson goes to Las Vegas to earn money to pay for a new engine for his motor car. Working as a waiter, he still finds the time to court young Rusty Martin.',
title: 'Viva Las Vegas',
score: 4.379656791687012
},
{
plot: 'Barry Pepper portrays legendary race car drive Dale Earnhardt, who died in 2001 during the last lap of the Daytona 500.',
title: '3: The Dale Earnhardt Story',
score: 4.3543548583984375
},
{
plot: 'Bounty hunters from the future transport a doomed race-car driver to 2009 New York, where his mind will be replaced with that of a dead billionaire.',
title: 'Freejack',
score: 4.257633209228516
},
{
plot: 'A mechanic takes his family to a car race and a series of events occur which brings problems, betrayals, violence and the unexpected death of an elderly person.',
title: 'National Mechanics',
score: 4.257633209228516
},
{
plot: 'A hot-shot race-car named Lightning McQueen gets waylaid in Radiator Springs, where he finds the true meaning of friendship and family.',
title: 'Cars',
score: 4.257633209228516
},
{
plot: 'Star race car Lightning McQueen and his pal Mater head overseas to compete in the World Grand Prix race. But the road to the championship becomes rocky as Mater gets caught up in an intriguing adventure of his own: international espionage.',
title: 'Cars 2',
score: 4.231379985809326
},
{
plot: "An illegal race that takes place over the United States and nothing will stop this bunch of racers except for the occasional cop or a damsel in distress. Jackie Chan's car is not in this ...",
title: 'Cannonball Fever',
score: 4.1651153564453125
},
{
plot: 'Roy is mad about cars, and runs Stallion Parts while attending to his yellow Mustang, far away from his daughter, which comes on holiday, while he is to attend a race. Soon he is challenged in a illegal race through the length of Norway.',
title: 'Bèrning',
score: 4.050384521484375
},
{
plot: "It's time for the annual London to Brighton antique car rally, and Alan McKim and Ambrose Claverhouse are not going to let their friendship stop them from trying to humiliate each other. ...",
title: 'Genevieve',
score: 3.9916391372680664
},
{
plot: "After a young man's premonition of a deadly race-car crash helps saves the lives of his peers, Death sets out to collect those who evaded their end.",
title: 'The Final Destination',
score: 3.9916391372680664
},
{
plot: "A fast-paced comedy about a young Belgian car nut and hairdresser's apprentice, his girlfriend, and their legal and illegal attempts to get a Porsche under him for his nearing debut race.",
title: 'The Departure',
score: 3.832036256790161
}
]

O Atlas Search retorna documentos que contêm os termos de query automobile, car ou vehicle e race, context ou rally porque configuramos automobile, vehicle e car para sejam sinônimos equivalent e configuramos rally e contest como sinônimos explicit de race na coleção synonymous_terms.

Voltar

extensão (obsoleto)