text
Nesta página
Definição
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.
Sintaxe
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>" } } }
Campos
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:
Se omitido, o padrão é | 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:
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 Sempre use 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 |
Exemplos
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.
Exemplo básico
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 }
Exemplos de Fuzzy
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 emnaw 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 paranaw
e cem termos semelhantes ayark
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 stringnaw 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
etitle
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 }
corresponder all
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
.
Exemplos de Sinônimos
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
.
Match any
Using equivalent
Mapping
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
.
Match any
Using explicit
Mapping
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.
Match all
Using Synonyms
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
.