Como usar sinônimos com o Atlas Search
Nesta página
Este tutorial descreve como adicionar uma coleção que configura palavras como sinônimos, criar um índice que define mapeamentos de sinônimos na coleção sample_mflix.movies
e executar queries do Atlas Search no campo title
usando palavras configuradas como sinônimos.
O tutorial orienta você pelas seguintes etapas:
Carregue uma ou mais coleções de origem de sinônimos de amostra no banco de dados
sample_mflix
.Crie um índice do Atlas Search com um ou mais mapeamentos de sinônimos para a coleção
sample_mflix.movies
.Execute queries de Atlas Search no campo
title
na coleçãosample_mflix.movies
para palavras configuradas como sinônimos na coleção de origem de sinônimos.
Antes de começar, certifique-se de que seu cluster do Atlas atenda aos requisitos descritos nos Pré-requisitos.
Observação
Para criar vários mapeamentos de sinônimos e executar a consulta de amostra avançada deste tutorial, você precisará de um cluster M10
ou superior.
Para criar um índice do Atlas Search, você deve ter acesso do Project Data Access Admin
ou superior ao projeto.
Carregar a coleção de fontes de sinônimos de amostra
Cada documento na coleção de fontes de sinônimos descreve como uma ou mais palavras são mapeadas para um ou mais sinônimos dessas palavras. Para saber mais sobre os campos e tipos de mapeamento de palavras nos documentos de coleta de origem dos sinônimos, consulte Formato de documentos de coleta de origem dos sinônimos.
Para começar, crie a coleção de fontes de sinônimos e, em seguida, adicione a coleção ao banco de dados em que pretende usar a coleção de fontes de sinônimos. Nesta seção, você cria uma ou duas coleções de origem de sinônimos de amostra no banco de dados do sample_mflix
e então utiliza as coleções de origem de sinônimos com um índice da coleção do movies
no mesmo banco de dados.
No Atlas, VáGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página Collections.
Clique no botão Browse Collections para o seu cluster.
O Data Explorer é exibido.
Crie uma ou mais coleções de sinônimos de amostra no banco de dados sample_mflix
.
Se você estiver executando um cluster de nível gratuito ou compartilhado, siga as etapas na guia Sinônimos de transporte para criar a coleção para uma única definição de mapeamento de sinônimos em seu índice. Se você tiver um cluster M10
ou superior e quiser criar vários mapeamentos de sinônimos em seu índice, siga as etapas nas duas guias para criar as coleções de Transportation Synonyms e Attire Synonyms.
Expanda o banco de dados
sample_mflix
e clique no ícone para abrir o modal Create Collection.Digite
transport_synonyms
no campo Collection name.Clique em Create para criar a coleção no banco de dados
sample_mflix
.
Expanda o banco de dados
sample_mflix
e clique no ícone para abrir o modal Create Collection.Digite
attire_synonyms
no campo Collection name.Clique em Create para criar a coleção no banco de dados
sample_mflix
.
Carregue os dados de amostra na coleção de sinônimos.
Siga as etapas nas guias para carregar dados na respectiva coleção.
Selecione a coleção
transport_synonyms
se ela não estiver selecionada.Clique em Insert Document para cada um dos documentos de amostra a serem adicionados à collection.
Clique na visualização JSON ({}) para substituir o documento padrão.
Copie e cole os seguintes documentos de amostra, um de cada vez, e clique em Insert para adicionar os documentos, um de cada vez, à collection.
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] } { "mappingType": "explicit", "input": ["boat"], "synonyms": ["boat", "vessel", "sail"] }
Selecione a coleção
attire_synonyms
se ela não estiver selecionada.Clique em Insert Document para cada um dos documentos de amostra a serem adicionados à collection.
Clique na visualização JSON ({}) para substituir o documento padrão.
Copie e cole os seguintes documentos de amostra, um de cada vez, e clique em Insert para adicionar os documentos, um de cada vez, à collection.
{ "mappingType": "equivalent", "synonyms": ["dress", "apparel", "attire"] } { "mappingType": "explicit", "input": ["hat"], "synonyms": ["hat", "fedora", "headgear"] }
Crie o Atlas Search Index com definição de mapeamento de sinônimo
O mapeamento de sinônimo no índice de uma coleção especifica a coleção de origem de sinônimos e o analisador para utilizar com a coleção.
Nesta seção, você cria um índice de Atlas Search que define um ou muitos mapeamentos de sinônimo para a coleção do sample_mflix.movies
. A definição de mapeamento no índice referencia a coleção de origem de sinônimos que você criou no banco de dados do sample_mflix
.
No Atlas, váGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página do Atlas Search do seu cluster.
Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.
Na barra lateral, clique em Atlas Search sob o título Services.
No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.
A página Atlas Search é exibida.
Clique no botão Browse Collections para o seu cluster.
Expanda o banco de dados e selecione a coleção.
Clique na guia Search Indexes da coleção.
A página Atlas Search é exibida.
Clique no nome do seu cluster.
Clique na aba Atlas Search.
A página Atlas Search é exibida.
Insira o Index Name e defina o Database and Collection.
No campo Index Name, digite
synonyms-tutorial
.Se você nomear seu índice
default
, não precisará especificar um parâmetroindex
no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetroindex
.Na seção Database and Collection, localize o banco de dados
sample_mflix
e selecione a coleçãomovies
.
Modifique a definição de índice padrão.
Para executar somente a consulta de exemplo simples, utilize a definição de índice na guia Mapeamento de Sinônimo Único abaixo. Se você tiver um cluster M10
ou superior e se você carregou ambas as coleções de origem de sinônimos de exemplo, você poderá executar ambas as queries de exemplo simples e avançadas utilizando a definição de índice que especifica múltiplos mapeamentos de sinônimo na guia Mapeamentos de sinônimo múltiplo abaixo.
A seguinte definição de índice especifica:
O analisador de idioma
lucene.english
como o analisador padrão para indexação e consulta do campotitle
.O nome
transportSynonyms
como nome para esse mapeamento de sinônimo.A coleção
transport_synonyms
como a coleção de sinônimos de origem para procurar sinônimos para consultas usando o mapeamentotransportSynonyms
.transportSynonyms
pode ser usado em consultas de texto em qualquer campo indexado com o analisadorlucene.english
(incluindo o campotitle
, neste exemplo).
Clique em Next.
Clique em Refine Your Index.
Clique em Add Field na seção Field Mappings.
Clique em Customized Configuration.
Configure os seguintes campos na janela Add Field Mapping e clique em Add após:
Nome do campo UIConfiguraçãoField Name
Insira
title
.Enable Dynamic Mapping
Alterne para Off.
Data Type Configuration
Clique em Add Data Type.
Selecione String.
Para Index Analyzer e Search Analyzer, clique no menu suspenso para selecionar lucene.english no menu suspenso lucene.language analisadores.
Para todos os outros campos não listados acima, aceite o padrão.
Clique em Add Synonym Mapping na seção Synonym Mappings.
Configure os seguintes campos na janela Add Synonym Mapping e clique em Add após:
Nome do campo UIConfiguraçãoSynonym Mapping Name
Insira
transportSynonyms
.Synonym Source Collection
Selecione
transport_synonyms
.Analyzer
Selecione
lucene.english
.Clique em Save Changes.
Substitua a definição de índice padrão pela seguinte definição de índice.
{ "mappings": { "dynamic": false, "fields": { "title": { "analyzer": "lucene.english", "type": "string" } } }, "synonyms": [ { "analyzer": "lucene.english", "name": "transportSynonyms", "source": { "collection": "transport_synonyms" } } ] } Clique em Next.
A seguinte definição de índice especifica:
O analisador de idioma
lucene.standard
como o analisador padrão para indexação e consulta do campotitle
.O nome
transportSynonyms
eattireSynonyms
como nomes para os mapeamentos de sinônimos.A coleção
transport_synonyms
como a coleção de sinônimos de origem para procurar sinônimos para consultas usando o mapeamentotransportSynonyms
.transportSynonyms
pode ser usado em queries de texto em qualquer campo indexado com o analisadorlucene.standard
(incluindo o campotitle
, neste tutorial de query de amostra).A coleção
attire_synonyms
como a coleção de sinônimos de origem para procurar sinônimos para consultas usando o mapeamentoattireSynonyms
.attireSynonyms
pode ser usado em consultas de texto em qualquer campo indexado com o analisadorlucene.standard
(incluindo o campotitle
, neste exemplo).
Clique em Next.
Clique em Refine Your Index.
Clique em Add Field na seção Field Mappings.
Configure os seguintes campos na janela Add Field Mapping e clique em Add:
Nome do campo UIConfiguraçãoField Name
Insira
title
.Enable Dynamic Mapping
Alterne para Off.
Data Type Configuration
Selecione String.
Para Index Analyzer e Search Analyzer, clique no menu suspenso para selecionar lucene.english no menu suspenso lucene.language analisadores.
Para todos os outros campos não listados acima, aceite o padrão.
Clique em Add Synonym Mapping na seção Synonym Mappings.
Configure os seguintes campos na janela Add Synonym Mapping e clique em Add:
Nome do campo UIConfiguraçãoSynonym Mapping Name
Insira
transportSynonyms
.Synonym Source Collection
Selecione
transport_synonyms
.Analyzer
Selecione
lucene.english
.Clique em Add Synonym Mapping novamente na seção Synonym Mappings.
Configure os seguintes campos na janela Add Synonym Mapping e clique em Add após:
Nome do campo UIConfiguraçãoSynonym Mapping Name
Insira
attireSynonyms
.Synonym Source Collection
Selecione
attire_synonyms
.Analyzer
Selecione
lucene.english
.Clique em Save Changes.
Substitua a definição de índice padrão pela seguinte definição de índice.
{ "mappings": { "dynamic": false, "fields": { "title": { "analyzer": "lucene.english", "type": "string" } } }, "synonyms": [ { "analyzer": "lucene.english", "name": "transportSynonyms", "source": { "collection": "transport_synonyms" } }, { "analyzer": "lucene.english", "name": "attireSynonyms", "source": { "collection": "attire_synonyms" } } ] } Clique em Next.
Pesquisar a collection
➤ Use o menu suspenso Selecione a linguagem para definir a linguagem dos exemplos desta seção.
Os sinônimos só podem ser usados em queries que usam o operador de texto. Nesta seção, você conecta-se ao Atlas cluster e então executa as queries de amostra utilizando o operador text
no campo title
na coleção sample_mflix.movies
. As queries de exemplo usam palavras configuradas como sinônimos de diferentes tipos de mapeamento na coleção de origem de sinônimos. A coleção de origem é referenciada no mapeamento de sinônimos que as queries utilizam.
No Atlas, váGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página do Atlas Search do seu cluster.
Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.
Na barra lateral, clique em Atlas Search sob o título Services.
No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.
A página Atlas Search é exibida.
Clique no botão Browse Collections para o seu cluster.
Expanda o banco de dados e selecione a coleção.
Clique na guia Search Indexes da coleção.
A página Atlas Search é exibida.
Clique no nome do seu cluster.
Clique na aba Atlas Search.
A página Atlas Search é exibida.
Execute as seguintes queries de exemplo na coleção movies
.
Se você criou um índice com uma única definição de mapeamento de sinônimo, execute a consulta a partir da seguinte guia Exemplo Simples. Se você definiu múltiplos mapeamentos de sinônimos em seu índice, você poderá executar as consultas de ambas as guias a seguir.
As seguintes consultas:
Exclua todos os campos, exceto o campo
title
.Adicione um campo denominado
score
.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A seguinte consulta pesquisa o campo title
para automobile
e utiliza a definição de mapeamento de sinônimo do transportSynonyms
para procurar os sinônimos do automobile
que você configurou na coleção de origem de sinônimos do transport_synonyms
.
[ { $search: { index: "synonyms-tutorial", text: { path: "title", query: "automobile", synonyms: "transportSynonyms" } } } ]
SCORE: 4.197734832763672 _id: “573a13a9f29313caabd1f18a” fullplot: "While traveling to California for the dispute of the final race of the…" imdb: Object year: 2006 ... title: "Cars" SCORE: 3.8511905670166016 _id: “573a1398f29313caabcea94c” plot: "A man must struggle to travel home for Thanksgiving with an obnoxious …" genres: Array runtime: 93 ... title: "Planes, Trains, and Automobiles" SCORE: 3.39473032951355 _id: “573a1397f29313caabce5fb0” plot: "Car Wash is about a close-knit group of employees who one day have all…" genres: Array runtime: 97 ... title: "Car Wash" SCORE: 3.39473032951355 _id: “573a1397f29313caabce7bd2” plot: "When the owner of a struggling used car lot is killed, it's up to the …" genres: Array runtime: 113 ... title: "Used Cars" SCORE: 3.39473032951355 _id: “573a13a6f29313caabd18bfe” fullplot: "Gifted 18-year-old Meg has been abandoned by her father and neglected …" imdb: Object year: 2002 ... title: "Blue Car" SCORE: 3.39473032951355 _id: “573a13c1f29313caabd64e3d” fullplot: "After Mater gets his best friend, star race car Lightning McQueen, a s…" imdb: Object year: 2011 ... title: "Cars 2" SCORE: 3.39473032951355 _id: “573a13eaf29313caabdce62c” plot: "A rebellious teenager navigates his way through the juvenile court sys…" genres: Array runtime: 94 ... title: "Stealing Cars" SCORE: 3.39473032951355 _id: “573a13f1f29313caabddc93f” plot: "A small town sheriff sets out to find the two kids who have taken his …" genres: Array runtime: 86 ... title: "Cop Car" SCORE: 2.8496146202087402 _id: “573a1396f29313caabce5480” plot: "The small town of Paris, Australia deliberately causes car accidents, …" genres: Array runtime: 91 ... title: "The Cars That Eat People" SCORE: 2.8496146202087402 _id: “573a139df29313caabcf9636” plot: "Military doctor General Klenski is arrested in Stalin's Russia in 1953…" genres: Array runtime: 137 ... title: "Khrustalyov, My Car!"
Os resultados da Pesquisa do Atlas contêm filmes com car
e automobile
no campo title
embora o termo de consulta seja automobile
porque configuramos o automobile
para ser um sinônimo de car
, vehicle
e automobile
na coleção de origem sinônimos denominada sample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavras car
e vehicle
. Para testar isto, substitua o valor do campo query
na consulta acima por car
ou vehicle
e execute a consulta.
A query pesquisa o campo title
por boat
e usa a definição de mapeamento de sinônimos transportSynonyms
para pesquisar os sinônimos de boat
que você configurou na coleção de fontes de sinônimos transport_synonyms
.
[ { $search: { index: "synonyms-tutorial", text: { path: "title", query: "boat", synonyms: "transportSynonyms" } } } ]
SCORE: 5.373150825500488 _id: “573a13e9f29313caabdcd013” plot: "A fearless sea captain sails a ship through loopholes in international…" genres: Array runtime: 90 ... title: "Vessel" SCORE: 4.589139938354492 _id: “573a13e8f29313caabdc9e72” countries: Array genres: Array runtime: 7 ... title: "Boats" SCORE: 4.3452959060668945 _id: “573a1398f29313caabce90b6” plot: "In 1914, a luxury ship leaves Italy in order to scatter the ashes of a…" genres: Array runtime: 128 ... title: "And the Ship Sails On" SCORE: 4.3452959060668945 _id: “573a139cf29313caabcf7c75” plot: "A young Pennsylvania man moves to Los Angeles to begin work for an amb…" genres: Array runtime: 90 ... title: "Broken Vessels" SCORE: 4.3452959060668945 _id: “573a13f0f29313caabdda2dd” plot: "A young man struggling with the death of his parents meets an extrover…" genres: Array runtime: 80 ... title: "Sailing to Paradise" SCORE: 3.711261749267578 _id: “573a1397f29313caabce8796” plot: "A Japanese photojournalist revisits Vietnam after the Liberation and l…" genres: Array runtime: 109 ... title: "Boat People" SCORE: 3.711261749267578 _id: “573a13a6f29313caabd17a98” plot: "Two straight men mistakenly end up on a "gays only" cruise." genres: Array runtime: 94 ... title: "Boat Trip" SCORE: 3.1153182983398438 _id: “573a1394f29313caabce036c” plot: "Three London gentlemen take vacation rowing down the Thames, encounter…" genres: Array runtime: 84 ... title: "Three Men in a Boat" SCORE: 3.1153182983398438 _id: “573a1395f29313caabce2c28” plot: "After a series of misunderstandings, the head of an aerospace research…" genres: Array runtime: 110 ... title: "The Glass Bottom Boat" SCORE: 3.1153182983398438 _id: “573a13c2f29313caabd68772” fullplot: "Jack is a shy and awkward man who drives a limo and lives an unassumin…" imdb: Object runtime: 2010 ... title: "Jack Goes Boating"
Os resultados do Atlas Search contêm filmes com boat
, vessel
, e sail
no campo title
porque configuramos boat
, vessel
, e sail
como sinônimos de boat
nos sinônimos coleção de códigos-fonte chamada sample_synonyms
, que é especificada no índice para a coleção.
O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra vessel
nos resultados:
{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 }
O Atlas Search não inclui documentos com boat
ou sail
no campo title
nos resultados porque não configuramos vessel
como sinônimo de boat
ou sail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campo query
na consulta acima por vessel
e execute a consulta novamente.
Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo sail
:
{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 }
O Atlas Search não inclui documentos com boat
ou vessel
no campo title
nos resultados porque não configuramos sail
como sinônimo de boat
ou vessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campo query
na query acima por sail
e execute a query novamente.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A query pesquisa o campo title
por automobile
e usa a definição de mapeamento de sinônimos transportSynonyms
para pesquisar os sinônimos de automobile
que você configurou na coleção de fontes de sinônimos transport_synonyms
. Além disso, a query pesquisa o campo title
por attire
e usa a definição de mapeamento de sinônimos attireSynonyms
para pesquisar os sinônimos de attire
que você configurou na coleção de fontes de sinônimos attire_synonyms
.
[ { $search: { "index": "synonyms-tutorial", "compound": { "should": [{ "text": { "path": "title", "query": "automobile", "synonyms": "transportSynonyms" } }, { "text": { "path": "title", "query": "attire", "synonyms": "attireSynonyms" } }] } } } ]
SCORE: 4.812004089355469 _id: “573a139af29313caabcf003f” plot: "The Dress is a tale filled with sex, violence, comedy and drama as it …" genres: Array runtime: 103 ... title: "The Dress" SCORE: 4.197734832763672 _id: “573a13a9f29313caabd1f18a” fullplot: "While traveling to California for the dispute of the final race of the…" imdb: Object year: 2006 ... title: "Cars" SCORE: 3.891493320465088 _id: “573a1397f29313caabce77cd” plot: "A mysterious blonde woman kills one of a psychiatrist's patients, and …" genres: Array runtime: 105 ... title: "Dressed to Kill" SCORE: 3.891493320465088 _id: “573a13bcf29313caabd57e07” fullplot: "Two things about Jane: she never says no to her friends (she's been a …" imdb Object year: 2008 ... title: "27 Dresses" SCORE: 3.8511905670166016 _id: “573a1398f29313caabcea94c” plot: "A man must struggle to travel home for Thanksgiving with an obnoxious …" genres: Array runtime: 93 ... title: "Planes, Trains, and Automobiles" SCORE: 3.39473032951355 _id: “573a1397f29313caabce5fb0” plot: "Car Wash is about a close-knit group of employees who one day have all…" genres: Array runtime: 97 ... title: "Car Wash" SCORE: 3.39473032951355 _id: “573a1397f29313caabce7bd2” plot: "When the owner of a struggling used car lot is killed, it's up to the …" genres: Array runtime: 113 ... title: "Used Cars" SCORE: 3.39473032951355 _id: “573a13a6f29313caabd18bfe” fullplot: "Gifted 18-year-old Meg has been abandoned by her father and neglected …" imdb: Object year: 2002 ... title: "Blue Car" SCORE: 3.39473032951355 _id: “573a13c1f29313caabd64e3d” fullplot: "After Mater gets his best friend, star race car Lightning McQueen, a s…" imdb: Object year: 2011 ... title: "Cars 2" SCORE: 3.39473032951355 _id: “573a13eaf29313caabdce62c” plot: "A rebellious teenager navigates his way through the juvenile court sys…" genres: Array runtime: 94 ... title: "Stealing Cars"
Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com car
no campo title
para o termo de consulta automobile
porque configuramos automobile
para ser um sinônimo de car
, vehicle
e automobile
na coleção de origem sinônimos denominada transport_synonyms
. O resultado também contém filmes com dress
no campo de título para o termo de consulta attire
porque configuramos attire
para ser um sinônimo de dress
, apparel
e attire
na coleção de origem sinônimos denominada attire_synonyms
.
O Atlas Search retorna os mesmos resultados para uma pesquisa de car
ou vehicle
na coleção de fontes transport_synonyms
e dress
ou apparel
na coleção de fontes attire_synonyms
. Para testar esse exemplo, substitua o valor do campo query
na consulta acima por car
ou vehicle
e substitua o valor do campo query
na consulta acima por dress
ou apparel
e execute a consulta novamente.
A query pesquisa o campo title
por boat
e usa a definição de mapeamento de sinônimos transportSynonyms
para pesquisar os sinônimos de boat
que você configurou na coleção de fontes de sinônimos transport_synonyms
. Além disso, a query pesquisa o campo title
por hat
e usa a definição de mapeamento de sinônimos attireSynonyms
para pesquisar os sinônimos de hat
que você configurou na coleção de fontes de sinônimos attire_synonyms
.
[ { $search: { index: "synonyms-tutorial", compound: { should: [{ text: { path: "title", query: "boat", synonyms: "transportSynonyms" } }, { text: { path: "title", query: "hat", synonyms: "attireSynonyms" } }] } } } ]
SCORE: 5.673145294189453 _id: “573a1397f29313caabce6bed” plot: "Down-on-his-luck Hollywood producer Barry 'Dutch' Detweiler attempts t…" genres: Array runtime: 114 ... title: "Fedora" SCORE: 5.373150825500488 _id: “573a13e9f29313caabdcd013” plot: "A fearless sea captain sails a ship through loopholes in international…" genres: Array runtime: 90 ... title: "Vessel" SCORE: 4.589139938354492 _id: “573a13e8f29313caabdc9e72” countries: Array genres: Array runtime: 7 ... title: "Boats" SCORE: 4.3452959060668945 _id: “573a1398f29313caabce90b6” plot: "In 1914, a luxury ship leaves Italy in order to scatter the ashes of a…" genres: Array runtime: 128 ... title: "And the Ship Sails On" SCORE: 4.3452959060668945 _id: “573a139cf29313caabcf7c75” plot: "A young Pennsylvania man moves to Los Angeles to begin work for an amb…" genres: Array runtime: 90 ... title: "Broken Vessels" SCORE: 4.3452959060668945 _id: “573a13f0f29313caabdda2dd” plot: "A young man struggling with the death of his parents meets an extrover…" genres: Array runtime: 80 ... title: "Sailing to Paradise" SCORE: 4.066137313842773 _id: “573a1392f29313caabcdaae8” plot: "An American dancer comes to Britain and falls for a model whom he init…" genres: Array runtime: 101 ... title: "Top Hat" SCORE: 4.066137313842773 _id: “573a1394f29313caabce05e8” plot: "A Korean War veteran's morphine addiction wreaks havoc upon his family…" genres: Array runtime: 109 ... title: "A Hatful of Rain" SCORE: 3.711261749267578 _id: “573a1397f29313caabce8796” plot: "A Japanese photojournalist revisits Vietnam after the Liberation and l…" genres: Array runtime: 109 ... title: "Boat People" SCORE: 3.711261749267578 _id: “573a13a6f29313caabd17a98” plot: "Two straight men mistakenly end up on a "gays only" cruise." genres: Array runtime: 94 ... title: "Boat Trip"
Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com vessel
, boat
e sail
no campo title
para o termo de consulta boat
porque configuramos boat
para ser sinônimo de boat
, vessel
e sail
na coleção de origem de sinônimos chamada transport_synonyms
.
O Atlas Search não inclui documentos com boat
ou sail
no campo title
nos resultados de uma pesquisa do termo vessel
porque não configuramos vessel
como sinônimo de boat
ou sail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos com boat
ou vessel
no campo title
nos resultados para uma pesquisa do termo sail
porque não configuramos sail
como sinônimo de boat
ou vessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campo query
na query acima por vessel
ou sail
e execute a query novamente.
O resultado também contém filmes com fedora
e hat
no campo de título do termo de query hat
porque configuramos hat
como sinônimo de hat
, fedora
e headgear
na coleção de fontes de sinônimos chamada attire_synonyms
.
O Atlas Search não inclui documentos com hat
ou fedora
no campo title
nos resultados de uma pesquisa do termo headgear
porque não configuramos headgear
como sinônimo de hat
ou fedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos com hat
ou headgear
no campo title
nos resultados para uma pesquisa do termo fedora
porque não configuramos fedora
como sinônimo de hat
ou headgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campo query
na query acima por fedora
ou headgear
e execute a query novamente.
Expanda os resultados da query.
O Search Tester pode não exibir todos os campos nos documentos que ele retorna. Para exibir todos os campos, incluindo o campo que você especifica no caminho da consulta, expanda o documento nos resultados.
Conecte-se ao seu cluster no mongosh
.
Abra o mongosh
em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh
.
Use o banco de dados sample_mflix
.
Execute o seguinte comando no prompt mongosh
:
use sample_mflix
Execute as seguintes queries de exemplo na coleção movies
.
Se você criou um índice com uma única definição de mapeamento de sinônimo, execute a query na aba Exemplo simples abaixo. Se você definiu múltiplos mapeamentos de sinônimos em seu índice, você pode executar as queries nas duas abas abaixo.
Essas queries usam os seguintes estágios de pipeline:
$search
estágio para pesquisar a coleção.Estágio
$limit
para limitar a saída a10
resultados.$project
estágio para:Exclua todos os campos, exceto o campo
title
.Adicione um campo denominado
score
.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A query pesquisa a palavra automobile
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query automobile
na coleção de fontes de sinônimos chamada transport_synonyms
.
db.movies.aggregate([ { $search: { "index": "synonyms-tutorial", "text": { "path": "title", "query": "automobile", "synonyms": "transportSynonyms" } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, "score": { $meta: "searchScore" } } } ])
{ "title" : "Cars", "score" : 4.197734832763672 } { "title" : "Planes, Trains & Automobiles", "score" : 3.8511905670166016 } { "title" : "Car Wash", "score" : 3.39473032951355 } { "title" : "Used Cars", "score" : 3.39473032951355 } { "title" : "Blue Car", "score" : 3.39473032951355 } { "title" : "Cars 2", "score" : 3.39473032951355 } { "title" : "Stealing Cars", "score" : 3.39473032951355 } { "title" : "Cop Car", "score" : 3.39473032951355 } { "title" : "The Cars That Eat People", "score" : 2.8496146202087402 } { "title" : "Khrustalyov, My Car!", "score" : 2.8496146202087402 }
Os resultados da Pesquisa do Atlas contêm filmes com car
e automobile
no campo title
embora o termo de consulta seja automobile
porque configuramos o automobile
para ser um sinônimo de car
, vehicle
e automobile
na coleção de origem sinônimos denominada sample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavras car
e vehicle
. Para testar isto, substitua o valor do campo query
na consulta acima por car
ou vehicle
e execute a consulta.
A query pesquisa a palavra boat
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query boat
na coleção de fontes de sinônimos chamada transport_synonyms
.
db.movies.aggregate([ { $search: { "index": "synonyms-tutorial", "text": { "path": "title", "query": "boat", "synonyms": "transportSynonyms" } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, "score": { $meta: "searchScore" } } } ])
{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Boats", "score" : 4.589139938354492 } { "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } { "title" : "Boat People", "score" : 3.711261749267578 } { "title" : "Boat Trip", "score" : 3.711261749267578 } { "title" : "Three Men in a Boat", "score" : 3.1153182983398438 } { "title" : "The Glass Bottom Boat", "score" : 3.1153182983398438 } { "title" : "Jack Goes Boating", "score" : 3.1153182983398438 }
Os resultados do Atlas Search contêm filmes com boat
, vessel
, e sail
no campo title
porque configuramos boat
, vessel
, e sail
como sinônimos de boat
nos sinônimos coleção de códigos-fonte chamada sample_synonyms
, que é especificada no índice para a coleção.
O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra vessel
nos resultados:
{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 }
O Atlas Search não inclui documentos com boat
ou sail
no campo title
nos resultados porque não configuramos vessel
como sinônimo de boat
ou sail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campo query
na consulta acima por vessel
e execute a consulta novamente.
Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo sail
:
{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 }
O Atlas Search não inclui documentos com boat
ou vessel
no campo title
nos resultados porque não configuramos sail
como sinônimo de boat
ou vessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campo query
na query acima por sail
e execute a query novamente.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A query pesquisa a palavra automobile
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query automobile
na coleção de fontes de sinônimos chamada transport_synonyms
. A query também pesquisa no campo title
a palavra attire
e usa a definição de mapeamento de sinônimos denominada attireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query attire
na coleção de fontes de sinônimos denominada attire_synonyms
.
db.movies.aggregate([ { $search: { "index": "synonyms-tutorial", "compound": { "should": [{ "text": { "path": "title", "query": "automobile", "synonyms": "transportSynonyms" } }, { "text": { "path": "title", "query": "attire", "synonyms": "attireSynonyms" } }] } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, "score": { $meta: "searchScore" } } } ])
[ { title: 'The Dress', score: 4.812004089355469 }, { title: 'Cars', score: 4.197734832763672 }, { title: 'Dressed to Kill', score: 3.891493320465088 }, { title: '27 Dresses', score: 3.891493320465088 }, { title: 'Planes, Trains & Automobiles', score: 3.8511905670166016 }, { title: 'Car Wash', score: 3.39473032951355 }, { title: 'Used Cars', score: 3.39473032951355 }, { title: 'Blue Car', score: 3.39473032951355 }, { title: 'Cars 2', score: 3.39473032951355 }, { title: 'Stealing Cars', score: 3.39473032951355 } ]
Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com car
no campo title
para o termo de consulta automobile
porque configuramos automobile
para ser um sinônimo de car
, vehicle
e automobile
na coleção de origem sinônimos denominada transport_synonyms
. O resultado também contém filmes com dress
no campo de título para o termo de consulta attire
porque configuramos attire
para ser um sinônimo de dress
, apparel
e attire
na coleção de origem sinônimos denominada attire_synonyms
.
O Atlas Search retorna os mesmos resultados para uma pesquisa de car
ou vehicle
na coleção de fontes transport_synonyms
e dress
ou apparel
na coleção de fontes attire_synonyms
. Para testar esse exemplo, substitua o valor do campo query
na consulta acima por car
ou vehicle
e substitua o valor do campo query
na consulta acima por dress
ou apparel
e execute a consulta novamente.
A query pesquisa a palavra boat
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query boat
na coleção de fontes de sinônimos chamada transport_synonyms
. A query também pesquisa no campo title
a palavra hat
e usa a definição de mapeamento de sinônimos denominada attireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query hat
na coleção de fontes de sinônimos denominada attire_synonyms
.
db.movies.aggregate([ { $search: { "index": "synonyms-tutorial", "compound": { "should": [{ "text": { "path": "title", "query": "boat", "synonyms": "transportSynonyms" } }, { "text": { "path": "title", "query": "hat", "synonyms": "attireSynonyms" } }] } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, "score": { $meta: "searchScore" } } } ])
[ { title: 'Fedora', score: 5.673145294189453 }, { title: 'Vessel', score: 5.373150825500488 }, { title: 'Boats', score: 4.589139938354492 }, { title: 'And the Ship Sails On', score: 4.3452959060668945 }, { title: 'Broken Vessels', score: 4.3452959060668945 }, { title: 'Sailing to Paradise', score: 4.3452959060668945 }, { title: 'Top Hat', score: 4.066137313842773 }, { title: 'A Hatful of Rain', score: 4.066137313842773 }, { title: 'Boat People', score: 3.711261749267578 }, { title: 'Boat Trip', score: 3.711261749267578 } ]
Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com vessel
, boat
e sail
no campo title
para o termo de consulta boat
porque configuramos boat
para ser sinônimo de boat
, vessel
e sail
na coleção de origem de sinônimos chamada transport_synonyms
.
O Atlas Search não inclui documentos com boat
ou sail
no campo title
nos resultados de uma pesquisa do termo vessel
porque não configuramos vessel
como sinônimo de boat
ou sail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos com boat
ou vessel
no campo title
nos resultados para uma pesquisa do termo sail
porque não configuramos sail
como sinônimo de boat
ou vessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campo query
na query acima por vessel
ou sail
e execute a query novamente.
O resultado também contém filmes com fedora
e hat
no campo de título do termo de query hat
porque configuramos hat
como sinônimo de hat
, fedora
e headgear
na coleção de fontes de sinônimos chamada attire_synonyms
.
O Atlas Search não inclui documentos com hat
ou fedora
no campo title
nos resultados de uma pesquisa do termo headgear
porque não configuramos headgear
como sinônimo de hat
ou fedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos com hat
ou headgear
no campo title
nos resultados para uma pesquisa do termo fedora
porque não configuramos fedora
como sinônimo de hat
ou headgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campo query
na query acima por fedora
ou headgear
e execute a query novamente.
Conecte-se ao seu cluster no MongoDB Compass.
Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.
Execute queries simples do Atlas Search na coleção movies
.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A query pesquisa o campo title
para a palavra automobile
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query automobile
na coleção de fontes de sinônimos chamada transport_synonyms
. A query inclui os seguintes estágios:
Estágio $limit para limitar a saída a 10 resultados.
Estágio $project para excluir todos os campos, exceto
title
e adicionar um campo chamadoscore
.
Para executar esta consulta no MongoDB Compass:
Clique na aba Aggregations.
Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.
estágio do pipelineQuery$search
{ "index": "synonyms-tutorial", "text": { "path": "title", "query": "automobile", "synonyms": "transportSynonyms" } } $limit
10 $project
{ "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } Se você habilitou Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do
$project
:{title Cars} {score 4.197734832763672} {title Planes, Trains & Automobiles} {score 3.8511905670166016} {title Car Wash} {score 3.39473032951355} {title Used Cars} {score 3.39473032951355} {title Blue Car} {score 3.39473032951355} {title Cars 2} {score 3.39473032951355} {title Stealing Cars} {score 3.39473032951355} {title Cop Car} {score 3.39473032951355} {title The Cars That Eat People} {score 2.8496146202087402} {title Khrustalyov, My Car!} {score 2.8496146202087402} Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
A consulta pesquisa o campo title
para a palavra boat
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consulta boat
na coleção de fontes de sinônimos chamada transport_synonyms
. Inclui os seguintes estágios:
Estágio $limit para limitar a saída a 10 resultados.
Estágio $project para excluir todos os campos, exceto
title
e adicionar um campo chamadoscore
.
Para executar esta consulta no MongoDB Compass:
Clique na aba Aggregations.
Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.
estágio do pipelineQuery$search
{ "index": "synonyms-tutorial", "text": { "path": "title", "query": "boat", "synonyms": "transportSynonyms" } } $limit
10 $project
{ "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } Se você habilitou Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do
$project
:{title Vessel} {score 5.373150825500488} {title Boats} {score 4.589139938354492} {title And the Ship Sails On} {score 4.3452959060668945} {title Broken Vessels} {score 4.3452959060668945} {title Sailing to Paradise} {score 4.3452959060668945} {title Boat People} {score 3.711261749267578} {title Boat Trip} {score 3.711261749267578} {title Three Men in a Boat} {score 3.1153182983398438} {title The Glass Bottom Boat} {score 3.1153182983398438} {title Jack Goes Boating} {score 3.1153182983398438} Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o índice que contém vários mapeamentos de sinônimos.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
A query pesquisa a palavra automobile
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query automobile
na coleção de fontes de sinônimos chamada transport_synonyms
. A query também pesquisa no campo title
a palavra attire
e usa a definição de mapeamento de sinônimos denominada attireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query attire
na coleção de fontes de sinônimos denominada attire_synonyms
.
A query inclui os seguintes estágios:
Estágio $limit para limitar a saída a 10 resultados.
Estágio $project para excluir todos os campos, exceto
title
e adicionar um campo chamadoscore
.
Para executar esta consulta no MongoDB Compass:
Clique na aba Aggregations.
Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.
estágio do pipelineQuery$search
{ "index": "synonyms-tutorial", "compound": { "should": [{ "text": { "path": "title", "query": "automobile", "synonyms": "transportSynonyms" } }, { "text": { "path": "title", "query": "attire", "synonyms": "attireSynonyms" } }] } } $limit
10 $project
{ "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } Se você habilitou Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do
$project
:{ title: 'The Dress', score: 4.812004089355469 }, { title: 'Cars', score: 4.197734832763672 }, { title: 'Dressed to Kill', score: 3.891493320465088 }, { title: '27 Dresses', score: 3.891493320465088 }, { title: 'Planes, Trains & Automobiles', score: 3.8511905670166016 }, { title: 'Car Wash', score: 3.39473032951355 }, { title: 'Used Cars', score: 3.39473032951355 }, { title: 'Blue Car', score: 3.39473032951355 }, { title: 'Cars 2', score: 3.39473032951355 }, { title: 'Stealing Cars', score: 3.39473032951355 } Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
A query pesquisa a palavra boat
no campo title
e usa a definição de mapeamento de sinônimos chamada transportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query boat
na coleção de fontes de sinônimos chamada transport_synonyms
. A query também pesquisa no campo title
a palavra hat
e usa a definição de mapeamento de sinônimos denominada attireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de query hat
na coleção de fontes de sinônimos denominada attire_synonyms
.
A query inclui os seguintes estágios:
Estágio $limit para limitar a saída a 10 resultados.
Estágio $project para excluir todos os campos, exceto
title
e adicionar um campo chamadoscore
.
Para executar esta consulta no MongoDB Compass:
Clique na aba Aggregations.
Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.
estágio do pipelineQuery$search
{ "index": "synonyms-tutorial", "compound": { "should": [{ "text": { "path": "title", "query": "boat", "synonyms": "transportSynonyms" } }, { "text": { "path": "title", "query": "hat", "synonyms": "attireSynonyms" } }] } } $limit
10 $project
{ "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } Se você habilitou Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do
$project
:{ title: 'Fedora', score: 5.673145294189453 }, { title: 'Vessel', score: 5.373150825500488 }, { title: 'Boats', score: 4.589139938354492 }, { title: 'And the Ship Sails On', score: 4. 3452959060668945 }, { title: 'Broken Vessels', score: 4.3452959060668945 }, { title: 'Sailing to Paradise', score: 4.3452959060668945 }, { title: 'Top Hat', score: 4.066137313842773 }, { title: 'A Hatful of Rain', score: 4.066137313842773 }, { title: 'Boat People', score: 3.711261749267578 }, { title: 'Boat Trip', score: 3.711261749267578 } Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.
Execute queries simples do Atlas Search na coleção movies
.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.go
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent-query.go
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraautomobile
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 // define structure of movies collection 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func main() { 19 var err error 20 // connect to the Atlas cluster 21 ctx := context.Background() 22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>")) 23 if err != nil { 24 panic(err) 25 } 26 defer client.Disconnect(ctx) 27 // set namespace 28 collection := client.Database("sample_mflix").Collection("movies") 29 // define pipeline 30 searchStage := bson.D{{"$search", bson.D{{"index", "synonyms-tutorial"}, {"text", bson.D{{"path", "title"}, {"query", "automobile"}, {"synonyms", "transportSynonyms"}}}}}} 31 limitStage := bson.D{{"$limit", 10}} 32 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 33 // specify the amount of time the operation can run on the server 34 opts := options.Aggregate().SetMaxTime(5 * time.Second) 35 // run pipeline 36 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts) 37 if err != nil { 38 panic(err) 39 } 40 // print results 41 var results []bson.D 42 if err = cursor.All(context.TODO(), &results); err != nil { 43 panic(err) 44 } 45 for _, result := range results { 46 fmt.Println(result) 47 } 48 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o seguinte comando para consultar sua collection:
go run synonyms-equivalent-query.go Quando você executa
synonyms-equivalent-query.go
, o programa imprime os seguintes documentos no seu terminal:[{title Cars} {score 4.197734832763672}] [{title Planes, Trains & Automobiles} {score 3.8511905670166016}] [{title Car Wash} {score 3.39473032951355}] [{title Used Cars} {score 3.39473032951355}] [{title Blue Car} {score 3.39473032951355}] [{title Cars 2} {score 3.39473032951355}] [{title Stealing Cars} {score 3.39473032951355}] [{title Cop Car} {score 3.39473032951355}] [{title The Cars That Eat People} {score 2.8496146202087402}] [{title Khrustalyov, My Car!} {score 2.8496146202087402}] Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
Crie um arquivo denominado
synonyms-explicit-query.go
.Copie e cole o exemplo de código no arquivo
synonyms-explicit-query.go
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraboat
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaboat
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 // define structure of movies collection 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func main() { 19 var err error 20 // connect to the Atlas cluster 21 ctx := context.Background() 22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>")) 23 if err != nil { 24 panic(err) 25 } 26 defer client.Disconnect(ctx) 27 // set namespace 28 collection := client.Database("sample_mflix").Collection("movies") 29 // define pipeline 30 searchStage := bson.D{{"$search", bson.D{{"text", bson.D{{"index", "synonyms-tutorial"}, {"path", "title"}, {"query", "boat"}, {"synonyms", "transportSynonyms"}}}}}} 31 limitStage := bson.D{{"$limit", 10}} 32 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 33 // specify the amount of time the operation can run on the server 34 opts := options.Aggregate().SetMaxTime(5 * time.Second) 35 // run pipeline 36 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts) 37 if err != nil { 38 panic(err) 39 } 40 // print results 41 var results []bson.D 42 if err = cursor.All(context.TODO(), &results); err != nil { 43 panic(err) 44 } 45 for _, result := range results { 46 fmt.Println(result) 47 } 48 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o seguinte comando para consultar sua collection:
go run synonyms-explicit-query.go [{title Vessel} {score 5.373150825500488}] [{title Boats} {score 4.589139938354492}] [{title And the Ship Sails On} {score 4.3452959060668945}] [{title Broken Vessels} {score 4.3452959060668945}] [{title Sailing to Paradise} {score 4.3452959060668945}] [{title Boat People} {score 3.711261749267578}] [{title Boat Trip} {score 3.711261749267578}] [{title Three Men in a Boat} {score 3.1153182983398438}] [{title The Glass Bottom Boat} {score 3.1153182983398438}] [{title Jack Goes Boating} {score 3.1153182983398438}] Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o índice que contém vários mapeamentos de sinônimos.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.go
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent-query.go
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraautomobile
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavraattire
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaattire
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 // define structure of movies collection 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func main() { 19 var err error 20 // connect to the Atlas cluster 21 ctx := context.Background() 22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>")) 23 if err != nil { 24 panic(err) 25 } 26 defer client.Disconnect(ctx) 27 // set namespace 28 collection := client.Database("sample_mflix").Collection("movies") 29 // define pipeline 30 searchStage := bson.D{{"$search", bson.M{ 31 "index": "synonyms-tutorial", 32 "compound": bson.M{ 33 "should": bson.A{ 34 bson.M{ 35 "text": bson.D{ 36 {"path", "title"}, {"query", "automobile"}, {"synonyms", "transportSynonyms"}, 37 }, 38 }, 39 bson.M{ 40 "text": bson.D{ 41 {"path", "title"}, {"query", "attire"}, {"synonyms", "attireSynonyms"}, 42 }, 43 }, 44 }, 45 }, 46 }}} 47 limitStage := bson.D{{"$limit", 10}} 48 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 49 // specify the amount of time the operation can run on the server 50 opts := options.Aggregate().SetMaxTime(5 * time.Second) 51 // run pipeline 52 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts) 53 if err != nil { 54 panic(err) 55 } 56 // print results 57 var results []bson.D 58 if err = cursor.All(context.TODO(), &results); err != nil { 59 panic(err) 60 } 61 for _, result := range results { 62 fmt.Println(result) 63 } 64 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o seguinte comando para consultar sua collection:
go run synonyms-equivalent-query.go [{title The Dress} {score 4.812004089355469}] [{title Cars} {score 4.197734832763672}] [{title Dressed to Kill} {score 3.891493320465088}] [{title 27 Dresses} {score 3.891493320465088}] [{title Planes, Trains & Automobiles} {score 3.8511905670166016}] [{title Car Wash} {score 3.39473032951355}] [{title Used Cars} {score 3.39473032951355}] [{title Blue Car} {score 3.39473032951355}] [{title Cars 2} {score 3.39473032951355}] [{title Stealing Cars} {score 3.39473032951355}] Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
Crie um arquivo denominado
synonyms-explicit-query.go
.Copie e cole o exemplo de código no arquivo
synonyms-explicit-query.go
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraboat
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaboat
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavrahat
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultahat
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 // define structure of movies collection 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func main() { 19 var err error 20 // connect to the Atlas cluster 21 ctx := context.Background() 22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>")) 23 if err != nil { 24 panic(err) 25 } 26 defer client.Disconnect(ctx) 27 // set namespace 28 collection := client.Database("sample_mflix").Collection("movies") 29 // define pipeline 30 searchStage := bson.D{{"$search", bson.M{ 31 "index": "synonyms-tutorial", 32 "compound": bson.M{ 33 "must": bson.A{ 34 bson.M{ 35 "text": bson.D{ 36 {"path", "title"}, {"query", "boat"}, {"synonyms", "transportSynonyms"}, 37 }, 38 }, 39 bson.M{ 40 "text": bson.D{ 41 {"path", "title"}, {"query", "hat"}, {"synonyms", "attireSynonyms"}, 42 }, 43 }, 44 }, 45 }, 46 }}} 47 limitStage := bson.D{{"$limit", 10}} 48 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 49 // specify the amount of time the operation can run on the server 50 opts := options.Aggregate().SetMaxTime(5 * time.Second) 51 // run pipeline 52 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts) 53 if err != nil { 54 panic(err) 55 } 56 // print results 57 var results []bson.D 58 if err = cursor.All(context.TODO(), &results); err != nil { 59 panic(err) 60 } 61 for _, result := range results { 62 fmt.Println(result) 63 } 64 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o seguinte comando para consultar sua collection:
go run synonyms-explicit-query.go [{title Fedora} {score 5.673145294189453}] [{title Vessel} {score 5.373150825500488}] [{title Boats} {score 4.589139938354492}] [{title And the Ship Sails On} {score 4.3452959060668945}] [{title Broken Vessels} {score 4.3452959060668945}] [{title Sailing to Paradise} {score 4.3452959060668945}] [{title Top Hat} {score 4.066137313842773}] [{title A Hatful of Rain} {score 4.066137313842773}] [{title Boat People} {score 3.711261749267578}] [{title Boat Trip} {score 3.711261749267578}] Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.
Execute queries simples do Atlas Search na coleção movies
.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
SynonymsEquivalentQuery.java
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraautomobile
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import static com.mongodb.client.model.Projections.include; 8 import static com.mongodb.client.model.Projections.computed; 9 import com.mongodb.client.MongoClient; 10 import com.mongodb.client.MongoClients; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoDatabase; 13 import org.bson.Document; 14 15 public class SynonymsEquivalentQuery { 16 public static void main( String[] args ) { 17 // define query 18 Document agg = new Document("$search", 19 new Document("index", "synonyms-tutorial") 20 .append("text", 21 new Document("query", "automobile") 22 .append("path","title") 23 .append("synonyms", "transportSynonyms"))); 24 25 // specify connection 26 String uri = "<connection-string>"; 27 28 // establish connection and set namespace 29 try (MongoClient mongoClient = MongoClients.create(uri)) { 30 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 31 MongoCollection<Document> collection = database.getCollection("movies"); 32 33 // run query and print results 34 collection.aggregate(Arrays.asList(agg, 35 limit(10), 36 project(fields(excludeId(), include("title"), computed("score", new Document("$meta", "searchScore"))))) 37 ).forEach(doc -> System.out.println(doc.toJson())); 38 } 39 } 40 } Observação
Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:
package com.mongodb.drivers; Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Compile e execute o arquivo
SynonymsEquivalentQuery.java
.javac SynonymsEquivalentQuery.java java SynonymsEquivalentQuery {"title": "Cars", "score": 4.197734832763672} {"title": "Planes, Trains & Automobiles", "score": 3.8511905670166016} {"title": "Car Wash", "score": 3.39473032951355} {"title": "Used Cars", "score": 3.39473032951355} {"title": "Blue Car", "score": 3.39473032951355} {"title": "Cars 2", "score": 3.39473032951355} {"title": "Stealing Cars", "score": 3.39473032951355} {"title": "Cop Car", "score": 3.39473032951355} {"title": "The Cars That Eat People", "score": 2.8496146202087402} {"title": "Khrustalyov, My Car!", "score": 2.8496146202087402} Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
Crie um arquivo denominado
SynonymsExplicitQuery.java
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraboat
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaboat
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import static com.mongodb.client.model.Projections.include; 8 import static com.mongodb.client.model.Projections.computed; 9 import com.mongodb.client.MongoClient; 10 import com.mongodb.client.MongoClients; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoDatabase; 13 import org.bson.Document; 14 15 public class SynonymsExplicitQuery { 16 public static void main( String[] args ) { 17 // define query 18 Document agg = new Document("$search", 19 new Document("index", "synonyms-tutorial") 20 .append("text", 21 new Document("query", "boat") 22 .append("path","title") 23 .append("synonyms", "transportSynonyms"))); 24 25 // specify connection 26 String uri = "<connection-string>"; 27 28 // establish connection and set namespace 29 try (MongoClient mongoClient = MongoClients.create(uri)) { 30 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 31 MongoCollection<Document> collection = database.getCollection("movies"); 32 33 // run query and print results 34 collection.aggregate(Arrays.asList(agg, 35 limit(10), 36 project(fields(excludeId(), include("title"), computed("score", new Document("$meta", "searchScore"))))) 37 ).forEach(doc -> System.out.println(doc.toJson())); 38 } 39 } 40 } Observação
Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:
package com.mongodb.drivers; Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Compile e execute o arquivo
SynonymsExplicitQuery.java
.javac SynonymsExplicitQuery.java java SynonymsExplicitQuery {"title": "Vessel", "score": 5.373150825500488} {"title": "Boats", "score": 4.589139938354492} {"title": "And the Ship Sails On", "score": 4.3452959060668945} {"title": "Broken Vessels", "score": 4.3452959060668945} {"title": "Sailing to Paradise", "score": 4.3452959060668945} {"title": "Boat People", "score": 3.711261749267578} {"title": "Boat Trip", "score": 3.711261749267578} {"title": "Three Men in a Boat", "score": 3.1153182983398438} {"title": "The Glass Bottom Boat", "score": 3.1153182983398438} {"title": "Jack Goes Boating", "score": 3.1153182983398438} Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o index com vários mappings de sinônimos.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
SynonymsEquivalentQuery.java
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraautomobile
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavraattire
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaattire
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.computed; 6 import static com.mongodb.client.model.Projections.excludeId; 7 import static com.mongodb.client.model.Projections.fields; 8 import static com.mongodb.client.model.Projections.include; 9 import com.mongodb.client.MongoClient; 10 import com.mongodb.client.MongoClients; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoDatabase; 13 import org.bson.Document; 14 15 public class SynonymsEquivalentQuery { 16 public static void main( String[] args ) { 17 Document agg = new Document("$search", 18 new Document("index", "synonyms-tutorial") 19 .append("compound", 20 new Document("should", Arrays.asList(new Document("text", 21 new Document("path", "title") 22 .append("query", "automobile") 23 .append("synonyms", "transportSynonyms")), 24 new Document("text", 25 new Document("path", "title") 26 .append("query", "attire") 27 .append("synonyms", "attireSynonyms")))))); 28 29 String uri = "<connection-string>"; 30 31 try (MongoClient mongoClient = MongoClients.create(uri)) { 32 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 33 MongoCollection<Document> collection = database.getCollection("movies"); 34 35 collection.aggregate(Arrays.asList(agg, 36 limit(10), 37 project(fields(excludeId(), include("title"), computed("score", new Document("$meta", "searchScore"))))) 38 ).forEach(doc -> System.out.println(doc.toJson())); 39 } 40 } 41 } Observação
Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:
package com.mongodb.drivers; Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Compile e execute o arquivo
SynonymsEquivalentQuery.java
.javac SynonymsEquivalentQuery.java java SynonymsEquivalentQuery {"title": "The Dress", "score": 4.812004089355469} {"title": "Cars", "score": 4.197734832763672} {"title": "Dressed to Kill", "score": 3.891493320465088} {"title": "27 Dresses", "score": 3.891493320465088} {"title": "Planes, Trains & Automobiles", "score": 3.8511905670166016} {"title": "Car Wash", "score": 3.39473032951355} {"title": "Used Cars", "score": 3.39473032951355} {"title": "Blue Car", "score": 3.39473032951355} {"title": "Cars 2", "score": 3.39473032951355} {"title": "Stealing Cars", "score": 3.39473032951355} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
Crie um arquivo denominado
SynonymsExplicitQuery.java
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraboat
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaboat
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavrahat
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultahat
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.computed; 6 import static com.mongodb.client.model.Projections.excludeId; 7 import static com.mongodb.client.model.Projections.fields; 8 import static com.mongodb.client.model.Projections.include; 9 import com.mongodb.client.MongoClient; 10 import com.mongodb.client.MongoClients; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoDatabase; 13 import org.bson.Document; 14 15 public class SynonymsExplicitQuery { 16 public static void main( String[] args ) { 17 Document agg = new Document("$search", 18 new Document("index", "synonyms-tutorial") 19 .append("compound", 20 new Document("should", Arrays.asList(new Document("text", 21 new Document("path", "title") 22 .append("query", "boat") 23 .append("synonyms", "transportSynonyms")), 24 new Document("text", 25 new Document("path", "title") 26 .append("query", "hat") 27 .append("synonyms", "attireSynonyms")))))); 28 29 String uri = "<connection-string>"; 30 31 try (MongoClient mongoClient = MongoClients.create(uri)) { 32 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 33 MongoCollection<Document> collection = database.getCollection("movies"); 34 35 collection.aggregate(Arrays.asList(agg, 36 limit(10), 37 project(fields(excludeId(), include("title"), computed("score", new Document("$meta", "searchScore"))))) 38 ).forEach(doc -> System.out.println(doc.toJson())); 39 } 40 } 41 } Observação
Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:
package com.mongodb.drivers; Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Compile e execute o arquivo
SynonymsExplicitQuery.java
.javac SynonymsExplicitQuery.java java SynonymsExplicitQuery {"title": "Fedora", "score": 5.673145294189453} {"title": "Vessel", "score": 5.373150825500488} {"title": "Boats", "score": 4.589139938354492} {"title": "And the Ship Sails On", "score": 4.3452959060668945} {"title": "Broken Vessels", "score": 4.3452959060668945} {"title": "Sailing to Paradise", "score": 4.3452959060668945} {"title": "Top Hat", "score": 4.066137313842773} {"title": "A Hatful of Rain", "score": 4.066137313842773} {"title": "Boat People", "score": 3.711261749267578} {"title": "Boat Trip", "score": 3.711261749267578} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.
Execute queries simples do Atlas Search na coleção movies
.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Imprime os documentos que correspondem à query da instância
AggregateFlow
.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
SynonymsEquivalentQuery.kt
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraautomobile
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun main() { 9 // establish connection and set namespace 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 // define query 17 val agg = Document( 18 "\$search", 19 Document("index", "synonyms-tutorial") 20 .append( 21 "text", 22 Document("query", "automobile") 23 .append("path", "title") 24 .append("synonyms", "transportSynonyms") 25 ) 26 ) 27 28 // run query and print results 29 val resultsFlow = collection.aggregate<Document>( 30 listOf( 31 agg, 32 limit(10), 33 project(fields( 34 excludeId(), 35 include("title"), 36 computed("score", Document("\$meta", "searchScore")) 37 )) 38 ) 39 ) 40 resultsFlow.collect { println(it) } 41 } 42 mongoClient.close() 43 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o arquivo
SynonymsEquivalentQuery.kt
.Ao executar o programa
SynonymsEquivalentQuery.kt
no seu IDE, ele imprime os seguintes documentos:Document{{title=Cars, score=4.140600204467773}} Document{{title=Planes, Trains & Automobiles, score=3.8122920989990234}} Document{{title=Blue Car, score=3.348478317260742}} Document{{title=Used Cars, score=3.348478317260742}} Document{{title=Cars 2, score=3.348478317260742}} Document{{title=Stealing Cars, score=3.348478317260742}} Document{{title=Cop Car, score=3.348478317260742}} Document{{title=Car Wash, score=3.348478317260742}} Document{{title=The Cars That Eat People, score=2.810762405395508}} Document{{title=Revenge of the Electric Car, score=2.810762405395508}} Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
Crie um arquivo denominado
SynonymsExplicitQuery.kt
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraboat
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaboat
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun main() { 9 // establish connection and set namespace 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 // define query 17 val agg = Document( 18 "\$search", 19 Document("index", "synonyms-tutorial") 20 .append( 21 "text", 22 Document("query", "boat") 23 .append("path", "title") 24 .append("synonyms", "transportSynonyms") 25 ) 26 ) 27 28 // run query and print results 29 val resultsFlow = collection.aggregate<Document>( 30 listOf( 31 agg, 32 limit(10), 33 project(fields( 34 excludeId(), 35 include("title"), 36 computed("score", Document("\$meta", "searchScore")) 37 )) 38 ) 39 ) 40 resultsFlow.collect { println(it) } 41 } 42 mongoClient.close() 43 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o arquivo
SynonymsExplicitQuery.kt
.Ao executar o programa
SynonymsExplicitQuery.kt
no seu IDE, ele imprime os seguintes documentos:Document{{title=Vessel, score=5.3159894943237305}} Document{{title=Boats, score=4.597315311431885}} Document{{title=Sailing to Paradise, score=4.299008369445801}} Document{{title=And the Ship Sails On, score=4.299008369445801}} Document{{title=Broken Vessels, score=4.299008369445801}} Document{{title=Boat Trip, score=3.717820644378662}} Document{{title=Boat People, score=3.717820644378662}} Document{{title=Jack Goes Boating, score=3.1207938194274902}} Document{{title=The Glass Bottom Boat, score=3.1207938194274902}} Document{{title=Raspberry Boat Refugee, score=3.1207938194274902}} Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o index com vários mappings de sinônimos.
Esses exemplos de código executam as seguintes tarefas:
Importa pacotes e dependências do
mongodb
.Estabelece uma ligação ao seu cluster Atlas.
Imprime os documentos que correspondem à query da instância
AggregateFlow
.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
SynonymsEquivalentQuery.kt
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraautomobile
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavraattire
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaattire
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun main() { 9 // establish connection and set namespace 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 // define query 17 val agg = Document( 18 "\$search", 19 Document("index", "synonyms-tutorial") 20 .append( 21 "compound", 22 Document( 23 "should", listOf( 24 Document( 25 "text", 26 Document("path", "title") 27 .append("query", "automobile") 28 .append("synonyms", "transportSynonyms") 29 ), 30 Document( 31 "text", 32 Document("path", "title") 33 .append("query", "attire") 34 .append("synonyms", "attireSynonyms") 35 ) 36 ) 37 ) 38 ) 39 ) 40 41 // run query and print results 42 val resultsFlow = collection.aggregate<Document>( 43 listOf( 44 agg, 45 limit(10), 46 project(fields( 47 excludeId(), 48 include("title"), 49 computed("score", Document("\$meta", "searchScore")) 50 )) 51 ) 52 ) 53 resultsFlow.collect { println(it) } 54 } 55 mongoClient.close() 56 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o arquivo
SynonymsEquivalentQuery.kt
.Ao executar o programa
SynonymsEquivalentQuery.kt
no seu IDE, ele imprime os seguintes documentos:Document{{title=The Dress, score=4.852960586547852}} Document{{title=Cars, score=4.140600204467773}} Document{{title=27 Dresses, score=3.9245595932006836}} Document{{title=Planes, Trains & Automobiles, score=3.8122920989990234}} Document{{title=Car Wash, score=3.348478317260742}} Document{{title=Used Cars, score=3.348478317260742}} Document{{title=Blue Car, score=3.348478317260742}} Document{{title=Cars 2, score=3.348478317260742}} Document{{title=Stealing Cars, score=3.348478317260742}} Document{{title=Cop Car, score=3.348478317260742}} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
Crie um arquivo denominado
SynonymsExplicitQuery.kt
.Copie e cole o seguinte código no arquivo.
O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraboat
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaboat
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavrahat
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultahat
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun main() { 9 // establish connection and set namespace 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 // define query 17 val agg = Document( 18 "\$search", 19 Document("index", "synonyms-tutorial") 20 .append( 21 "compound", 22 Document( 23 "should", listOf( 24 Document( 25 "text", 26 Document("path", "title") 27 .append("query", "boat") 28 .append("synonyms", "transportSynonyms") 29 ), 30 Document( 31 "text", 32 Document("path", "title") 33 .append("query", "hat") 34 .append("synonyms", "attireSynonyms") 35 ) 36 ) 37 ) 38 ) 39 ) 40 41 // run query and print results 42 val resultsFlow = collection.aggregate<Document>( 43 listOf( 44 agg, 45 limit(10), 46 project(fields( 47 excludeId(), 48 include("title"), 49 computed("score", Document("\$meta", "searchScore")) 50 )) 51 ) 52 ) 53 54 resultsFlow.collect { println(it) } 55 } 56 57 mongoClient.close() 58 } Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.Execute o arquivo
SynonymsExplicitQuery.kt
.Ao executar o programa
SynonymsExplicitQuery.kt
no seu IDE, ele imprime os seguintes documentos:Document{{title=Fedora, score=5.6159772872924805}} Document{{title=Vessel, score=5.3159894943237305}} Document{{title=Boats, score=4.597315311431885}} Document{{title=And the Ship Sails On, score=4.299008369445801}} Document{{title=Broken Vessels, score=4.299008369445801}} Document{{title=Sailing to Paradise, score=4.299008369445801}} Document{{title=Top Hat, score=4.01986026763916}} Document{{title=A Hatful of Rain, score=4.01986026763916}} Document{{title=Boat People, score=3.717820644378662}} Document{{title=Boat Trip, score=3.717820644378662}} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.
Execute queries simples do Atlas Search na coleção movies
.
Esses exemplos de código executam as seguintes tarefas:
Importa
mongodb
, o driver do Node.js da MongoDB.Cria uma instância da classe
MongoClient
para estabelecer uma conexão com seu cluster do Atlas.Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.js
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent-query.js
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraautomobile
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const agg = [ 5 { 6 $search: { 7 index: "synonyms-tutorial", 8 text: { 9 path: "title", 10 query: "automobile", 11 synonyms: "transportSynonyms", 12 }, 13 }, 14 }, 15 { 16 $limit: 10, 17 }, 18 { 19 $project: { 20 _id: 0, 21 title: 1, 22 score: { $meta: "searchScore" }, 23 }, 24 }, 25 ]; 26 27 MongoClient.connect( 28 "<connection-string>", 29 { useNewUrlParser: true, useUnifiedTopology: true }, 30 async function (connectErr, client) { 31 assert.equal(null, connectErr); 32 const coll = client.db("sample_mflix").collection("movies"); 33 let cursor = await coll.aggregate(agg); 34 await cursor.forEach((doc) => console.log(doc)); 35 client.close(); 36 } 37 ); Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
node synonyms-equivalent-query.js { title: 'Cars', score: 4.197734832763672 } { title: 'Planes, Trains & Automobiles', score: 3.8511905670166016 } { title: 'Car Wash', score: 3.39473032951355 } { title: 'Used Cars', score: 3.39473032951355 } { title: 'Blue Car', score: 3.39473032951355 } { title: 'Cars 2', score: 3.39473032951355 } { title: 'Stealing Cars', score: 3.39473032951355 } { title: 'Cop Car', score: 3.39473032951355 } { title: 'The Cars That Eat People', score: 2.8496146202087402 } { title: 'Khrustalyov, My Car!', score: 2.8496146202087402 } Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
Crie um arquivo denominado
synonyms-explicit-query.js
.Copie e cole o exemplo de código no arquivo
synonyms-explicit-query.js
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraboat
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaboat
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const agg = [ 5 { 6 $search: { 7 index: "synonyms-tutorial", 8 text: { 9 path: "title", 10 query: "boat", 11 synonyms: "transportSynonyms", 12 }, 13 }, 14 }, 15 { 16 $limit: 10, 17 }, 18 { 19 $project: { 20 _id: 0, 21 title: 1, 22 score: { $meta: "searchScore" }, 23 }, 24 }, 25 ]; 26 27 MongoClient.connect( 28 "<connection-string>", 29 { useNewUrlParser: true, useUnifiedTopology: true }, 30 async function (connectErr, client) { 31 assert.equal(null, connectErr); 32 const coll = client.db("sample_mflix").collection("movies"); 33 let cursor = await coll.aggregate(agg); 34 await cursor.forEach((doc) => console.log(doc)); 35 client.close(); 36 } 37 ); Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
node synonyms-explicit-query.js { title: 'Vessel', score: 5.373150825500488 } { title: 'Boats', score: 4.589139938354492 } { title: 'And the Ship Sails On', score: 4.3452959060668945 } { title: 'Broken Vessels', score: 4.3452959060668945 } { title: 'Sailing to Paradise', score: 4.3452959060668945 } { title: 'Boat People', score: 3.711261749267578 } { title: 'Boat Trip', score: 3.711261749267578 } { title: 'Three Men in a Boat', score: 3.1153182983398438 } { title: 'The Glass Bottom Boat', score: 3.1153182983398438 } { title: 'Jack Goes Boating', score: 3.1153182983398438 } Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o index com vários mappings de sinônimos.
Esses exemplos de código executam as seguintes tarefas:
Importa
mongodb
, o driver do Node.js da MongoDB.Cria uma instância da classe
MongoClient
para estabelecer uma conexão com seu cluster do Atlas.Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.js
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent-query.js
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraautomobile
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavraattire
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaattire
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 pconst MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const agg = [ 5 { 6 '$search': { 7 'index': 'synonyms-tutorial', 8 'compound': { 9 'should': [ 10 { 11 'text': { 12 'path': 'title', 13 'query': 'automobile', 14 'synonyms': 'transportSynonyms' 15 } 16 }, { 17 'text': { 18 'path': 'title', 19 'query': 'attire', 20 'synonyms': 'attireSynonyms' 21 } 22 } 23 ] 24 } 25 } 26 }, { 27 '$limit': 10 28 }, { 29 '$project': { 30 '_id': 0, 31 'title': 1, 32 'score': { 33 '$meta': 'searchScore' 34 } 35 } 36 } 37 ]; 38 39 MongoClient.connect( 40 "<connection-string>", 41 { useNewUrlParser: true, useUnifiedTopology: true }, 42 async function (connectErr, client) { 43 assert.equal(null, connectErr); 44 const coll = client.db("sample_mflix").collection("movies"); 45 let cursor = await coll.aggregate(agg); 46 await cursor.forEach((doc) => console.log(doc)); 47 client.close(); 48 } 49 ); Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
node synonyms-equivalent-query.js { title: 'The Dress', score: 4.812004089355469 } { title: 'Cars', score: 4.197734832763672 } { title: 'Dressed to Kill', score: 3.891493320465088 } { title: '27 Dresses', score: 3.891493320465088 } { title: 'Planes, Trains & Automobiles', score: 3.8511905670166016 } { title: 'Car Wash', score: 3.39473032951355 } { title: 'Used Cars', score: 3.39473032951355 } { title: 'Blue Car', score: 3.39473032951355 } { title: 'Cars 2', score: 3.39473032951355 } { title: 'Stealing Cars', score: 3.39473032951355 } Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
Crie um arquivo denominado
synonyms-explicit-query.js
.Copie e cole o exemplo de código no arquivo
synonyms-explicit-query.js
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraboat
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaboat
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavrahat
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultahat
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const agg = [ 5 { 6 '$search': { 7 'index': 'synonyms-tutorial', 8 'compound': { 9 'should': [ 10 { 11 'text': { 12 'path': 'title', 13 'query': 'boat', 14 'synonyms': 'transportSynonyms' 15 } 16 }, { 17 'text': { 18 'path': 'title', 19 'query': 'hat', 20 'synonyms': 'attireSynonyms' 21 } 22 } 23 ] 24 } 25 } 26 }, { 27 '$limit': 10 28 }, { 29 '$project': { 30 '_id': 0, 31 'title': 1, 32 'score': { 33 '$meta': 'searchScore' 34 } 35 } 36 } 37 ]; 38 39 MongoClient.connect( 40 "<connection-string>", 41 { useNewUrlParser: true, useUnifiedTopology: true }, 42 async function (connectErr, client) { 43 assert.equal(null, connectErr); 44 const coll = client.db("sample_mflix").collection("movies"); 45 let cursor = await coll.aggregate(agg); 46 await cursor.forEach((doc) => console.log(doc)); 47 client.close(); 48 } 49 ); Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
node synonyms-explicit-query.js { title: 'Fedora', score: 5.673145294189453 } { title: 'Vessel', score: 5.373150825500488 } { title: 'Boats', score: 4.589139938354492 } { title: 'And the Ship Sails On', score: 4.3452959060668945 } { title: 'Broken Vessels', score: 4.3452959060668945 } { title: 'Sailing to Paradise', score: 4.3452959060668945 } { title: 'Top Hat', score: 4.066137313842773 } { title: 'A Hatful of Rain', score: 4.066137313842773 } { title: 'Boat People', score: 3.711261749267578 } { title: 'Boat Trip', score: 3.711261749267578 } Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.
Execute queries simples do Atlas Search na coleção movies
.
Esses exemplos de código executam as seguintes tarefas:
Importa
pymongo
, o driver Python do MongoDB e o módulodns
, que é necessário para conectarpymongo
aAtlas
usando uma string de conexão da lista de sementes de DNS.Cria uma instância da classe
MongoClient
para estabelecer uma conexão com seu cluster do Atlas.Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.py
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent.py
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraautomobile
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
estágio para limitar a saída a 10 resultadosEstágio
$project
para excluir todos os campos, excetotitle
, e adicionar um campo chamadoscore
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = client['sample_mflix']['movies'].aggregate([ 6 { 7 '$search': { 8 'index': 'synonyms-tutorial', 9 'text': { 10 'path': 'title', 11 'query': 'automobile', 12 'synonyms': 'transportSynonyms' 13 } 14 } 15 }, 16 { 17 '$limit': 10 18 }, 19 { 20 '$project': { 21 '_id': 0, 22 'title': 1, 23 'score': { 24 '$meta': 'searchScore' 25 } 26 } 27 } 28 ]) 29 30 for i in result: 31 print(i) Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
python synonyms-equivalent-query.py {'title': 'Cars', 'score': 4.197734832763672} {'title': 'Planes, Trains & Automobiles', 'score': 3.8511905670166016} {'title': 'Car Wash', 'score': 3.39473032951355} {'title': 'Used Cars', 'score': 3.39473032951355} {'title': 'Blue Car', 'score': 3.39473032951355} {'title': 'Cars 2', 'score': 3.39473032951355} {'title': 'Stealing Cars', 'score': 3.39473032951355} {'title': 'Cop Car', 'score': 3.39473032951355} {'title': 'The Cars That Eat People', 'score': 2.8496146202087402} {'title': 'Khrustalyov, My Car!', 'score': 2.8496146202087402} Os resultados da Pesquisa do Atlas contêm filmes com
car
eautomobile
no campotitle
embora o termo de consulta sejaautomobile
porque configuramos oautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadasample_synonyms
, que é especificado no índice da coleção. Atlas Search retorna os mesmos resultados para uma pesquisa das palavrascar
evehicle
. Para testar isto, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e execute a consulta.
Crie um arquivo denominado
synonyms-explicit-query.py
.Copie e cole o exemplo de código no arquivo
synonyms-explicit.py
.O exemplo de código contém os seguintes estágios:
$search
estágio para pesquisar no campotitle
pela palavraboat
e utiliza a definição de mapeamento sinônimo denominadatransportSynonyms
para procurar por palavras configuradas como sinônimos da palavra de consultaboat
na coleção de origem sinônimos denominadatransport_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = client['sample_mflix']['movies'].aggregate([ 6 { 7 '$search': { 8 'index': 'synonyms-tutorial', 9 'text': { 10 'path': 'title', 11 'query': 'boat', 12 'synonyms': 'transportSynonyms' 13 } 14 } 15 }, 16 { 17 '$limit': 10 18 }, 19 { 20 '$project': { 21 '_id': 0, 22 'title': 1, 23 'score': { 24 '$meta': 'searchScore' 25 } 26 } 27 } 28 ]) 29 30 for i in result: 31 print(i) Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
python synonyms-explicit-query.py {'title': 'Vessel', 'score': 5.373150825500488} {'title': 'Boats', 'score': 4.589139938354492} {'title': 'And the Ship Sails On', 'score': 4.3452959060668945} {'title': 'Broken Vessels', 'score': 4.3452959060668945} {'title': 'Sailing to Paradise', 'score': 4.3452959060668945} {'title': 'Boat People', 'score': 3.711261749267578} {'title': 'Boat Trip', 'score': 3.711261749267578} {'title': 'Three Men in a Boat', 'score': 3.1153182983398438} {'title': 'The Glass Bottom Boat', 'score': 3.1153182983398438} {'title': 'Jack Goes Boating', 'score': 3.1153182983398438} Os resultados do Atlas Search contêm filmes com
boat
,vessel
, esail
no campotitle
porque configuramosboat
,vessel
, esail
como sinônimos deboat
nos sinônimos coleção de códigos-fonte chamadasample_synonyms
, que é especificada no índice para a coleção.O Atlas Search retorna os seguintes documentos apenas para uma pesquisa da palavra
vessel
nos resultados:{ "title" : "Vessel", "score" : 5.373150825500488 } { "title" : "Broken Vessels", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados porque não configuramosvessel
como sinônimo deboat
ousail
nos sinônimos coleção de códigos-fonte. Para testar isso, substitua o valor do campoquery
na consulta acima porvessel
e execute a consulta novamente.Da mesma forma, o Atlas Search retorna apenas os seguintes documentos nos resultados para uma pesquisa do termo
sail
:{ "title" : "And the Ship Sails On", "score" : 4.3452959060668945 } { "title" : "Sailing to Paradise", "score" : 4.3452959060668945 } O Atlas Search não inclui documentos com
boat
ouvessel
no campotitle
nos resultados porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de fonte de sinônimos. Para testar este exemplo, substitua o valor do campoquery
na query acima porsail
e execute a query novamente.
Execute pesquisas avançadas do Atlas Search se você criou o index com vários mappings de sinônimos.
Esses exemplos de código executam as seguintes tarefas:
Importa
pymongo
, o driver Python do MongoDB e o módulodns
, que é necessário para conectarpymongo
aAtlas
usando uma string de conexão da lista de sementes de DNS.Cria uma instância da classe
MongoClient
para estabelecer uma conexão com seu cluster do Atlas.Itera sobre o cursor para imprimir os documentos que correspondem à consulta.
Os resultados da consulta de pesquisa do Atlas variam de acordo com o tipo de mapeamento de palavras definido na coleção de fontes de sinônimos.
Crie um arquivo denominado
synonyms-equivalent-query.py
.Copie e cole o exemplo de código no arquivo
synonyms-equivalent.py
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraautomobile
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaautomobile
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavraattire
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaattire
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = client['sample_mflix']['movies'].aggregate([ 6 { 7 '$search': { 8 'index': 'synonyms-tutorial', 9 'compound': { 10 'should': [ 11 { 12 'text': { 13 'path': 'title', 14 'query': 'automobile', 15 'synonyms': 'transportSynonyms' 16 } 17 }, { 18 'text': { 19 'path': 'title', 20 'query': 'attire', 21 'synonyms': 'attireSynonyms' 22 } 23 } 24 ] 25 } 26 } 27 }, { 28 '$limit': 10 29 }, { 30 '$project': { 31 '_id': 0, 32 'title': 1, 33 'score': { 34 '$meta': 'searchScore' 35 } 36 } 37 } 38 ]) 39 40 for i in result: 41 print(i) Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
python synonyms-equivalent-query.py {'title': 'The Dress', 'score': 4.812004089355469} {'title': 'Cars', 'score': 4.197734832763672} {'title': 'Dressed to Kill', 'score': 3.891493320465088} {'title': '27 Dresses', 'score': 3.891493320465088} {'title': 'Planes, Trains & Automobiles', 'score': 3.8511905670166016} {'title': 'Car Wash', 'score': 3.39473032951355} {'title': 'Used Cars', 'score': 3.39473032951355} {'title': 'Blue Car', 'score': 3.39473032951355} {'title': 'Cars 2', 'score': 3.39473032951355} {'title': 'Stealing Cars', 'score': 3.39473032951355} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
car
no campotitle
para o termo de consultaautomobile
porque configuramosautomobile
para ser um sinônimo decar
,vehicle
eautomobile
na coleção de origem sinônimos denominadatransport_synonyms
. O resultado também contém filmes comdress
no campo de título para o termo de consultaattire
porque configuramosattire
para ser um sinônimo dedress
,apparel
eattire
na coleção de origem sinônimos denominadaattire_synonyms
.O Atlas Search retorna os mesmos resultados para uma pesquisa de
car
ouvehicle
na coleção de fontestransport_synonyms
edress
ouapparel
na coleção de fontesattire_synonyms
. Para testar esse exemplo, substitua o valor do campoquery
na consulta acima porcar
ouvehicle
e substitua o valor do campoquery
na consulta acima pordress
ouapparel
e execute a consulta novamente.
Crie um arquivo denominado
synonyms-explicit-query.py
.Copie e cole o exemplo de código no arquivo
synonyms-explicit.py
.O exemplo de código contém os seguintes estágios:
$search
para pesquisar no campotitle
a palavraboat
e usa a definição de mapeamento de sinônimos denominadatransportSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultaboat
na coleção de fontes de sinônimos denominadatransport_synonyms
. A consulta também pesquisa no campotitle
a palavrahat
e usa a definição de mapeamento de sinônimos denominadaattireSynonyms
para pesquisar palavras configuradas como sinônimos da palavra de consultahat
na coleção de fontes de sinônimos denominadaattire_synonyms
.$limit
para limitar a saída a 10 resultados.Estágio
$project
para excluir todos os campos, excetotitle
e adicionar um campo chamadoscore
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = client['sample_mflix']['movies'].aggregate([ 6 { 7 '$search': { 8 'index': 'synonyms-tutorial', 9 'compound': { 10 'should': [ 11 { 12 'text': { 13 'path': 'title', 14 'query': 'boat', 15 'synonyms': 'transportSynonyms' 16 } 17 }, { 18 'text': { 19 'path': 'title', 20 'query': 'hat', 21 'synonyms': 'attireSynonyms' 22 } 23 } 24 ] 25 } 26 } 27 }, { 28 '$limit': 10 29 }, { 30 '$project': { 31 '_id': 0, 32 'title': 1, 33 'score': { 34 '$meta': 'searchScore' 35 } 36 } 37 } 38 ]) 39 40 for i in result: 41 print(i) Antes de executar o exemplo, substitua
<connection-string>
por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados.Execute o seguinte comando para consultar sua collection:
python synonyms-explicit-query.py {'title': 'Fedora', 'score': 5.673145294189453} {'title': 'Vessel', 'score': 5.373150825500488} {'title': 'Boats', 'score': 4.589139938354492} {'title': 'And the Ship Sails On', 'score': 4.3452959060668945} {'title': 'Broken Vessels', 'score': 4.3452959060668945} {'title': 'Sailing to Paradise', 'score': 4.3452959060668945} {'title': 'Top Hat', 'score': 4.066137313842773} {'title': 'A Hatful of Rain', 'score': 4.066137313842773} {'title': 'Boat People', 'score': 3.711261749267578} {'title': 'Boat Trip', 'score': 3.711261749267578} Os resultados da Pesquisa Atlas contêm documentos para ambos os termos de pesquisa. Os resultados contêm filmes com
vessel
,boat
esail
no campotitle
para o termo de consultaboat
porque configuramosboat
para ser sinônimo deboat
,vessel
esail
na coleção de origem de sinônimos chamadatransport_synonyms
.O Atlas Search não inclui documentos com
boat
ousail
no campotitle
nos resultados de uma pesquisa do termovessel
porque não configuramosvessel
como sinônimo deboat
ousail
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comboat
ouvessel
no campotitle
nos resultados para uma pesquisa do termosail
porque não configuramossail
como sinônimo deboat
ouvessel
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porvessel
ousail
e execute a query novamente.O resultado também contém filmes com
fedora
ehat
no campo de título do termo de queryhat
porque configuramoshat
como sinônimo dehat
,fedora
eheadgear
na coleção de fontes de sinônimos chamadaattire_synonyms
.O Atlas Search não inclui documentos com
hat
oufedora
no campotitle
nos resultados de uma pesquisa do termoheadgear
porque não configuramosheadgear
como sinônimo dehat
oufedora
na coleção de códigos-fonte de sinônimos. Da mesma forma, o Atlas Search não inclui documentos comhat
ouheadgear
no campotitle
nos resultados para uma pesquisa do termofedora
porque não configuramosfedora
como sinônimo dehat
ouheadgear
na coleção de códigos-fonte de sinônimos. Para testar esses exemplos, substitua o valor do campoquery
na query acima porfedora
ouheadgear
e execute a query novamente.