Defina Mapeamentos Sinônimos em seu Índice de Busca no Atlas
Nesta página
- Sintaxe
- Opções
- Documentos de collection de fonte de sinônimos
- Documentos de coleção de formato de fonte de sinônimos
- Alterações nos documentos de coleção de fonte de sinônimos
mappingType
Exemplosequivalent
explicit
- Exemplo
- Exemplo de collection de fonte de sinônimos
- Exemplos de definição de índice
- Mapeamento estático
- Mapeamento dinâmico
synonyms
permitem que você indexe e pesquise em sua coleção palavras que tenham o mesmo ou quase o mesmo significado. Para configurar um índice do Atlas Search com mapeamentos de sinônimos, você deve:
Crie uma nova coleção com documentos sinônimos formatados corretamente. Verifique se:
Sua coleção está no mesmo banco de dados que o índice que fará referência à coleção.
Formate os documentos da coleção conforme descrito nos Documentos da coleção de fontes de sinônimos.
Faça referência à coleção de fontes de sinônimos em um mapeamento de sinônimos na definição do índice.
Observação
Limitação de cluster de nível gratuito (M0) e compartilhado (M2 e M5)
Uma definição de índice pode ter somente um mapeamento de sinônimos.
Esta página descreve o formato da coleção de fontes de sinônimos e como definir mapeamentos de sinônimos que fazem referência à coleção de fontes de sinônimos no seu índice do Atlas Search. Um mapeamento de sinônimos configura um índice do Atlas Search para suportar queries que aplicam sinônimos de uma coleção de fontes de sinônimos separada. Você pode usar a visualização Atlas Search Visual Editor ou a visualização Atlas Search JSON Editor na IU do Atlas ou na API do Atlas Search para criar o índice. Você pode usar sinônimos somente em queries que usam o operador de texto.
Sintaxe
synonyms
tem a seguinte sintaxe em uma definição de índice:
1 { 2 "name": "<index-name>", 3 "analyzer": "<analyzer-for-index>", 4 "searchAnalyzer": "<analyzer-for-query>", 5 "mappings": { 6 "dynamic": <boolean>, 7 "fields": { <field-definition> } 8 }, 9 "synonyms": [ 10 { 11 "name": "<synonym-mapping-name>", 12 "source": { 13 "collection": "<source-collection-name>" 14 }, 15 "analyzer": "<synonym-mapping-analyzer>" 16 } 17 ] 18 }
Opções
synonyms
usa os seguintes campos em uma definição de índice:
Campo | Tipo | Descrição | necessidade |
---|---|---|---|
analyzer | string | Nome do analisador para utilizar com este mapeamento de sinônimo. Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador. Por padrão, o Atlas Search utiliza o analisador padrão ( Para usar sinônimos com palavras de parada, você deve indexar o campo usando o Standard Analyzer ou adicionar a entrada de sinônimo sem a palavra de parada. Você pode utilizar qualquer analisador do Atlas Search, exceto o seguinte:
Tokenizadores de analisador personalizado e filtros de token:
| Obrigatório |
name | string | Nome do mapeamento de sinônimos. O nome deve ser exclusivo na definição do índice. O valor não pode ser uma string vazia. | Obrigatório |
source | documento | Obrigatório | |
source.collection | string | Nome da coleção MongoDB que está no mesmo banco de dados que o índice do Atlas Search. Os documentos nesta coleção devem estar no formato descrito nos Documentos de coleção de fonte de sinônimos. | Obrigatório |
Documentos de collection de fonte de sinônimos
Cada documento na collection especificada como origem dos sinônimos descreve como uma ou mais palavras correspondem a um ou mais sinônimos dessas palavras.
Observação
Em clusters do Atlas de camadas gratuitas e compartilhadas, a coleção de sinônimos não pode exceder 10.000 documentos.
Documentos de coleção de formato de fonte de sinônimos
Você deve configurar cada documento com os seguintes campos:
Campo | Tipo | Descrição | necessidade |
---|---|---|---|
input | array de strings | Obrigatório para mapeamentos Para mapeamentos do | Condicional |
mappingType | string | Tipo de mapeamento. O valor pode ser um dos seguintes: | Obrigatório |
synonyms | array de strings | Palavras que são sinônimas umas das outras se O Atlas Search considera que cada string, independentemente do número de palavras dentro dela, seja um token único. Por exemplo, o Atlas Search tokeniza a string Para usar sinônimos com palavras de parada, você deve adicionar a entrada de sinônimo sem a palavra de parada ou indexar o campo usando o Analisador Padrão. Para um exemplo de cada | Obrigatório |
Os documentos na coleção podem conter outros campos. Os documentos na coleção são aditivos e os mapeamentos são deduplicados. Os sinônimos do Atlas Search são armazenados como uma coleção separada do Atlas, que conta com a mesma cota de armazenamento que qualquer outra coleção no Atlas. O Atlas Search pode usar mais recursos de computação para aplicar sinônimos de coleções de origem de sinônimos maiores.
Aviso
Não inclua documentos de sinônimos inválidos na coleção de fontes de sinônimos. O Atlas Search não criará índices se os índices usarem mapeamentos de sinônimos que fazem referência a coleções com documentos inválidos. Inclua apenas documentos de sinônimo formatados corretamente em sua coleção de fontes de sinônimos.
O MongoDB não recomenda adicionar documentos de sinônimo a coleções de origem de sinônimo em um ambiente de produção sem antes validar se eles estão formatados corretamente e se comportam conforme o esperado em um ambiente de teste.
Alterações nos documentos de coleção de fonte de sinônimos
Se você fizer alterações em sua coleção de origem de sinônimos:
Não é necessário reindexar porque o Atlas Search observa as alterações e atualiza automaticamente seu mapa interno de sinônimos.
O tempo que o Atlas Search leva para atualizar os mapeamentos de sinônimos aumenta com o tamanho da coleção de fontes de sinônimos. Observe que as alterações nos documentos de sinônimos terminarão por se refletir nos resultados da query do Atlas Search.
mappingType
Exemplos
O Atlas fornece os documentos para os seguintes exemplos de tipo de mapeamento da Atlas Search em uma coleção chamada sample_synonyms
. Você pode carregar esses documentos no cluster no mesmo banco de dados da coleção. Para carregar esses documentos no cluster, ao criar o índice para a coleção, faça o seguinte:
Ao selecionar Configuration Method, selecione Visual Editor.
Ao Add synonym mapping ao seu índice, selecione Load sample collection no menu suspenso Synonym source collection.
equivalent
Exemplo
Neste exemplo de tipo de mapeamento do equivalent
, os tokens synonyms
car
, vehicle
e automobile
são configurados para serem sinônimos um do outro:
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
Para uma query de texto para car
, vehicle
ou automobile
aplicando um mapeamento de sinônimo que inclui tal documento, o Atlas Search retorna documentos que contenham o termo car
, vehicle
ou automobile
.
explicit
Exemplo
Neste exemplo de tipo de mapeamento do explicit
, o token input
beer
está configurado para considerar beer
, brew
e pint
como sinônimos:
{ "mappingType": "explicit", "input": ["beer"], "synonyms": ["beer", "brew", "pint"] }
Para uma query de texto para beer
aplicar um mapeamento de sinônimo que inclua tal documento, o Atlas Search retorna documentos que contêm os termos "cerveja", "cerva" ou "breja" porque o beer
de token input
é explicitamente mapeado para todos esses tokens synonyms
. No entanto, para uma query para pint
, o Atlas Search não localiza documentos que contenham beer
porque pint
não está explicitamente mapeado para beer
.
Exemplo
Os exemplos desta página incluem:
Uma coleção de fontes de sinônimos de amostra chamada
synonymous_terms
no banco de dadossample_mflix
.Exemplos de definição de índice que dependem de documentos nas coleções
sample_mflix.movies
esample_mflix.synonymous_terms
.
Exemplo de collection de fonte de sinônimos
A seguinte coleção chamada synonymous_terms
é um exemplo de coleção de fontes de sinônimos que pode ser usada com a coleção movies
no banco de banco de dados sample_mflix
.
Observação
Para saber como formatar os documentos na coleção, consulte Documentos de coleção de fonte de sinônimos.
A coleção sample_mflix.synonymous_terms
contém os seguintes documentos:
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
{ "mappingType": "explicit", "input": ["race"], "synonyms": ["contest", "rally"] }
{ "mappingType": "equivalent", "synonyms": ["dress", "apparel", "attire"] }
{ "mappingType": "explicit", "input": ["boat"], "synonyms": ["vessel", "sail"] }
Exemplos de definição de índice
Os exemplos a seguir da collection sample_mflix.movies
mostram as definições do índice usando mapeamentos estáticos e dinâmicos.
Observação
Mapeamento estático
O seguinte índice:
Configura um índice com um campo de texto único e uma definição de mapeamento de sinônimo único que utiliza o mapeamento configurado na coleção
synonymous_terms
.Analisa o campo
plot
com o analisadorlucene.english
.Habilita sinônimos da coleção
synonymous_terms
para queries sobre campos analisados com o analisadorlucene.english
.
Você pode usar o Editor Visual ou o EditorJSON na interface do usuário do Atlas para configurar o índice a seguir. Para configurar esse índice, depois de selecionar o método de configuração, selecione a coleção movies
no banco de dados sample_mflix
.
Clique em Refine Your Index.
Na seção Field Mappings, clique em Add Field.
Clique em Customized Configuration.
Defina as seguintes configurações na janela Add Field Mapping :
Field NameEnable Dynamic MappingData Type ConfigurationSelecioneplot
.Alterne para desabilitar.Clique em Add Data Type.
Selecione String no menu suspenso.
Selecione
lucene.english
emlucene.language
no menu suspenso Index Analyzer .
Clique em Add.
Na seção Synonyms Mappings, clique em Add Synonym Mapping.
Defina as seguintes configurações na janela Add Synonym Mapping :
Synonym mapping nameSynonym source collectionAnalyzerDigitarmy_synonyms
Selecionesynonymous_terms
.Selecionelucene.english
emlucene.language
no menu suspenso.Clique em Add.
Substitua o índice padrão pelo seguinte índice.
{ "mappings": { "dynamic": false, "fields": { "plot": { "type": "string", "analyzer": "lucene.english" } } }, "synonyms": [ { "analyzer": "lucene.english", "name": "my_synonyms", "source": { "collection": "synonymous_terms" } } ] }
Mapeamento dinâmico
O seguinte índice:
Configura um índice para todos os campos nos documentos e uma única definição de mapeamento de sinônimo que utiliza o mapeamento configurado na coleção
synonymous_terms
.Utiliza o analisador padrão,
lucene.standard
, para analisar todos os campos.Habilita sinônimos da coleção
synonymous_terms
para queries sobre campos analisados com o analisadorlucene.standard
.
Você pode utilizar o Editor Visual ou o Editor JSON na UI do Atlas para configurar o seguinte índice. Para configurar este índice, após selecionar seu método de configuração, selecione a collection movies
no banco de dados sample_mflix
.
Clique em Refine Your Index.
Na seção Synonyms Mappings, clique em Add Synonym Mapping.
Defina as seguintes configurações na janela Add Synonym Mapping :
Synonym mapping nameSynonym source collectionAnalyzerDigitarmy_synonyms
Selecionesynonymous_terms
.Selecionelucene.standard
no menu suspenso se ainda não estiver selecionado.Clique em Add.
{ "mappings": { "dynamic": true }, "synonyms": [ { "analyzer": "lucene.standard", "name": "my_synonyms", "source": { "collection": "synonymous_terms" } } ] }