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

Como usar sinônimos com o Atlas Search

Nesta página

  • Carregar a coleção de fontes de sinônimos de amostra
  • Crie o Atlas Search Index com definição de mapeamento de sinônimo
  • Pesquisar a collection

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:

  1. Carregue uma ou mais coleções de origem de sinônimos de amostra no banco de dados sample_mflix.

  2. Crie um índice do Atlas Search com um ou mais mapeamentos de sinônimos para a coleção sample_mflix.movies.

  3. Execute queries de Atlas Search no campo title na coleção sample_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.

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.

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Clique no botão Browse Collections para o seu cluster.

O Data Explorer é exibido.

3

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.

  1. Expanda o banco de dados sample_mflix e clique no ícone para abrir o modal Create Collection.

  2. Digite transport_synonyms no campo Collection name.

  3. Clique em Create para criar a coleção no banco de dados sample_mflix.

  1. Expanda o banco de dados sample_mflix e clique no ícone para abrir o modal Create Collection.

  2. Digite attire_synonyms no campo Collection name.

  3. Clique em Create para criar a coleção no banco de dados sample_mflix.

4

Siga as etapas nas guias para carregar dados na respectiva coleção.

  1. Selecione a coleção transport_synonyms se ela não estiver selecionada.

  2. Clique em Insert Document para cada um dos documentos de amostra a serem adicionados à collection.

  3. Clique na visualização JSON ({}) para substituir o documento padrão.

  4. 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"]
    }
  1. Selecione a coleção attire_synonyms se ela não estiver selecionada.

  2. Clique em Insert Document para cada um dos documentos de amostra a serem adicionados à collection.

  3. Clique na visualização JSON ({}) para substituir o documento padrão.

  4. 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"]
    }

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.

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

  2. No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3
4
  • Para uma experiência abada, selecione a Pesquisa Atlas Visual Editor.

  • Para editar a definição de índice bruto, selecione a Pesquisa Atlas JSON Editor.

5
  1. No campo Index Name, digite synonyms-tutorial.

    Se você nomear seu índice default, não precisará especificar um parâmetro index no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetro index.

  2. Na seção Database and Collection, localize o banco de dados sample_mflix e selecione a coleção movies.

6

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 campo title.

  • 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 mapeamento transportSynonyms. transportSynonyms pode ser usado em consultas de texto em qualquer campo indexado com o analisador lucene.english (incluindo o campo title, neste exemplo).

  1. Clique em Next.

  2. Clique em Refine Your Index.

  3. Clique em Add Field na seção Field Mappings.

  4. Clique em Customized Configuration.

  5. Configure os seguintes campos na janela Add Field Mapping e clique em Add após:

    Nome do campo UI
    Configuração

    Field Name

    Insira title.

    Enable Dynamic Mapping

    Alterne para Off.

    Data Type Configuration

    1. Clique em Add Data Type.

    2. Selecione String.

    3. 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.

  6. Clique em Add Synonym Mapping na seção Synonym Mappings.

  7. Configure os seguintes campos na janela Add Synonym Mapping e clique em Add após:

    Nome do campo UI
    Configuração

    Synonym Mapping Name

    Insira transportSynonyms.

    Synonym Source Collection

    Selecione transport_synonyms.

    Analyzer

    Selecione lucene.english.

  8. Clique em Save Changes.

  1. 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"
    }
    }
    ]
    }
  2. 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 campo title.

  • O nome transportSynonyms e attireSynonyms 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 mapeamento transportSynonyms. transportSynonyms pode ser usado em queries de texto em qualquer campo indexado com o analisador lucene.standard (incluindo o campo title, 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 mapeamento attireSynonyms. attireSynonyms pode ser usado em consultas de texto em qualquer campo indexado com o analisador lucene.standard (incluindo o campo title, neste exemplo).

  1. Clique em Next.

  2. Clique em Refine Your Index.

  3. Clique em Add Field na seção Field Mappings.

  4. Configure os seguintes campos na janela Add Field Mapping e clique em Add:

    Nome do campo UI
    Configuração

    Field Name

    Insira title.

    Enable Dynamic Mapping

    Alterne para Off.

    Data Type Configuration

    1. Selecione String.

    2. 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.

  5. Clique em Add Synonym Mapping na seção Synonym Mappings.

  6. Configure os seguintes campos na janela Add Synonym Mapping e clique em Add:

    Nome do campo UI
    Configuração

    Synonym Mapping Name

    Insira transportSynonyms.

    Synonym Source Collection

    Selecione transport_synonyms.

    Analyzer

    Selecione lucene.english.

  7. Clique em Add Synonym Mapping novamente na seção Synonym Mappings.

  8. Configure os seguintes campos na janela Add Synonym Mapping e clique em Add após:

    Nome do campo UI
    Configuração

    Synonym Mapping Name

    Insira attireSynonyms.

    Synonym Source Collection

    Selecione attire_synonyms.

    Analyzer

    Selecione lucene.english.

  9. Clique em Save Changes.

  1. 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"
    }
    }
    ]
    }
  2. Clique em Next.

7
8

Uma janela modal é exibida para que você saiba que seu índice está construindo. Clique no botão Close.

9

O índice deve levar cerca de um minuto para ser criado. Enquanto está se formando, a coluna Status mostra Build in Progress. Quando terminar de se formar, a coluna Status mostrará Active.


➤ 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.

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

  2. No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3

Clique no botão Query à direita do índice para consultar.

4

Clique em Edit Query para visualizar uma amostra de sintaxe de consulta padrão no formato JSON.

5

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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

6

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.

1

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.

2

Execute o seguinte comando no prompt mongosh:

use sample_mflix
3

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 a 10 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.

2

Na tela Database, clique no banco de dados sample_mflix e, em seguida, clique na coleção movies.

3

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 chamado score.

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. 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 pipeline
    Query

    $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 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 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 chamado score.

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. 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 pipeline
    Query

    $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, 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.

4

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 chamado score.

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. 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 pipeline
    Query

    $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 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.

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 chamado score.

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. 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 pipeline
    Query

    $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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

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.

  1. Crie um arquivo denominado synonyms-equivalent-query.go.

  2. 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 campo title pela palavra automobile e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta automobile na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1package main
    2
    3import (
    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
    14type MovieCollection struct {
    15 title string `bson:"Title,omitempty"`
    16}
    17
    18func 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}
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.go.

  2. 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 campo title pela palavra boat e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta boat na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1package main
    2
    3import (
    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
    14type MovieCollection struct {
    15 title string `bson:"Title,omitempty"`
    16}
    17
    18func 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}
  3. 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.

  4. 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, 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.

2

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.

  1. Crie um arquivo denominado synonyms-equivalent-query.go.

  2. 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 campo title a palavra automobile e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta automobile na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta attire na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1package main
    2
    3import (
    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
    14type MovieCollection struct {
    15 title string `bson:"Title,omitempty"`
    16}
    17
    18func 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}
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.go.

  2. 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 campo title a palavra boat e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta boat na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta hat na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1package main
    2
    3import (
    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
    14type MovieCollection struct {
    15 title string `bson:"Title,omitempty"`
    16}
    17
    18func 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}
  3. 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.

  4. 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

junit

4.11 ou versão superior

mongodb-driver-sync

4.3.0 ou uma versão superior

slf4j-log4j12

1.7.30 ou uma versão superior

2

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.

  1. Crie um arquivo denominado SynonymsEquivalentQuery.java.

  2. 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 campo title pela palavra automobile e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta automobile na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.limit;
    4import static com.mongodb.client.model.Aggregates.project;
    5import static com.mongodb.client.model.Projections.excludeId;
    6import static com.mongodb.client.model.Projections.fields;
    7import static com.mongodb.client.model.Projections.include;
    8import static com.mongodb.client.model.Projections.computed;
    9import com.mongodb.client.MongoClient;
    10import com.mongodb.client.MongoClients;
    11import com.mongodb.client.MongoCollection;
    12import com.mongodb.client.MongoDatabase;
    13import org.bson.Document;
    14
    15public 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;
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado SynonymsExplicitQuery.java.

  2. 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 campo title pela palavra boat e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta boat na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.limit;
    4import static com.mongodb.client.model.Aggregates.project;
    5import static com.mongodb.client.model.Projections.excludeId;
    6import static com.mongodb.client.model.Projections.fields;
    7import static com.mongodb.client.model.Projections.include;
    8import static com.mongodb.client.model.Projections.computed;
    9import com.mongodb.client.MongoClient;
    10import com.mongodb.client.MongoClients;
    11import com.mongodb.client.MongoCollection;
    12import com.mongodb.client.MongoDatabase;
    13import org.bson.Document;
    14
    15public 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;
  3. 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.

  4. 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, 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.

3

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.

  1. Crie um arquivo denominado SynonymsEquivalentQuery.java.

  2. Copie e cole o seguinte código no arquivo.

    O exemplo de código contém os seguintes estágios:

    • $search para pesquisar no campo title a palavra automobile e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta automobile na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta attire na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.limit;
    4import static com.mongodb.client.model.Aggregates.project;
    5import static com.mongodb.client.model.Projections.computed;
    6import static com.mongodb.client.model.Projections.excludeId;
    7import static com.mongodb.client.model.Projections.fields;
    8import static com.mongodb.client.model.Projections.include;
    9import com.mongodb.client.MongoClient;
    10import com.mongodb.client.MongoClients;
    11import com.mongodb.client.MongoCollection;
    12import com.mongodb.client.MongoDatabase;
    13import org.bson.Document;
    14
    15public 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;
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado SynonymsExplicitQuery.java.

  2. Copie e cole o seguinte código no arquivo.

    O exemplo de código contém os seguintes estágios:

    • $search para pesquisar no campo title a palavra boat e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta boat na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta hat na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.limit;
    4import static com.mongodb.client.model.Aggregates.project;
    5import static com.mongodb.client.model.Projections.computed;
    6import static com.mongodb.client.model.Projections.excludeId;
    7import static com.mongodb.client.model.Projections.fields;
    8import static com.mongodb.client.model.Projections.include;
    9import com.mongodb.client.MongoClient;
    10import com.mongodb.client.MongoClients;
    11import com.mongodb.client.MongoCollection;
    12import com.mongodb.client.MongoDatabase;
    13import org.bson.Document;
    14
    15public 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;
  3. 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.

  4. 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

mongodb-driver-kotlin-coroutine

4.10.0 ou uma versão superior

2

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.

  1. Crie um arquivo denominado SynonymsEquivalentQuery.kt.

  2. 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 campo title pela palavra automobile e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta automobile na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun 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}
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado SynonymsExplicitQuery.kt.

  2. 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 campo title pela palavra boat e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta boat na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun 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}
  3. 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.

  4. 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, 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.

3

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.

  1. Crie um arquivo denominado SynonymsEquivalentQuery.kt.

  2. Copie e cole o seguinte código no arquivo.

    O exemplo de código contém os seguintes estágios:

    • $search para pesquisar no campo title a palavra automobile e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta automobile na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta attire na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun 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}
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado SynonymsExplicitQuery.kt.

  2. Copie e cole o seguinte código no arquivo.

    O exemplo de código contém os seguintes estágios:

    • $search para pesquisar no campo title a palavra boat e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta boat na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta hat na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun 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}
  3. 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.

  4. 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

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.

  1. Crie um arquivo denominado synonyms-equivalent-query.js.

  2. 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 campo title pela palavra automobile e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta automobile na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1const MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const 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
    27MongoClient.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);
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.js.

  2. 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 campo title pela palavra boat e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta boat na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1const MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const 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
    27MongoClient.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);
  3. 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.

  4. 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, 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.

2

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.

  1. Crie um arquivo denominado synonyms-equivalent-query.js.

  2. 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 campo title a palavra automobile e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta automobile na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta attire na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1pconst MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const 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
    39MongoClient.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);
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.js.

  2. 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 campo title a palavra boat e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta boat na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta hat na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1const MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const 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
    39MongoClient.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);
  3. 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.

  4. 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

1

Esses exemplos de código executam as seguintes tarefas:

  • Importa pymongo, o driver Python do MongoDB e o módulo dns, que é necessário para conectar pymongo a Atlas 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.

  1. Crie um arquivo denominado synonyms-equivalent-query.py.

  2. 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 campo title pela palavra automobile e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta automobile na coleção de origem sinônimos denominada transport_synonyms.

    • $limit estágio para limitar a saída a 10 resultados

    • Estágio $project para excluir todos os campos, exceto title , e adicionar um campo chamado score

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = 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
    30for i in result:
    31 print(i)
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.py.

  2. 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 campo title pela palavra boat e utiliza a definição de mapeamento sinônimo denominada transportSynonyms para procurar por palavras configuradas como sinônimos da palavra de consulta boat na coleção de origem sinônimos denominada transport_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = 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
    30for i in result:
    31 print(i)
  3. 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.

  4. 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, 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.

2

Esses exemplos de código executam as seguintes tarefas:

  • Importa pymongo, o driver Python do MongoDB e o módulo dns, que é necessário para conectar pymongo a Atlas 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.

  1. Crie um arquivo denominado synonyms-equivalent-query.py.

  2. 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 campo title a palavra automobile e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta automobile na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta attire na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = 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
    40for i in result:
    41 print(i)
  3. 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.

  4. 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 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.

  1. Crie um arquivo denominado synonyms-explicit-query.py.

  2. 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 campo title a palavra boat e usa a definição de mapeamento de sinônimos denominada transportSynonyms para pesquisar palavras configuradas como sinônimos da palavra de consulta boat na coleção de fontes de sinônimos denominada transport_synonyms. A consulta 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 consulta hat na coleção de fontes de sinônimos denominada attire_synonyms.

    • $limit para limitar a saída a 10 resultados.

    • Estágio $project para excluir todos os campos, exceto title e adicionar um campo chamado score.

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = 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
    40for i in result:
    41 print(i)
  3. 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.

  4. 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, boate sail no campo title para o termo de consulta boat porque configuramos boat para ser sinônimo de boat, vessele 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.

Voltar

Facetas