A synonyms
opção em uma definição de índice do MongoDB Search especifica mapeamentos de sinônimos que permitem indexar e pesquisar em sua coleção palavras que tenham o mesmo significado ou quase o mesmo. Para configurar um índice do MongoDB Search com mapeamentos de sinônimos, você deve:
Adicione uma coleção de documentos de sinônimos ao seu cluster. Verifique se:
Sua coleção está no mesmo banco de dados que o índice que fará referência à coleção
Os documentos estão formatados corretamente
Faça referência à coleção de fontes de sinônimos em um mapeamento de sinônimos na definição do índice.
Um mapeamento de sinônimos configura um índice do MongoDB Search para oferecer suporte a queries que aplicam sinônimos de uma coleção de fontes de sinônimos no mesmo banco de dados da coleção que você está indexando. Você pode usar sinônimos somente em consultas que usam o operador de texto.
Observação
Limitação de cluster de nível gratuito (M0)
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 em seu índice do MongoDB Search.
Sintaxe
synonyms
tem a seguinte sintaxe em uma definição de índice:
1 { 2 "synonyms": [ 3 { 4 "name": "<synonym-mapping-name>", 5 "source": { 6 "collection": "<source-collection-name>" 7 }, 8 "analyzer": "<synonym-mapping-analyzer>" 9 } 10 ] 11 }
Opções
synonyms
usa os seguintes campos em uma definição de índice:
Campo | Tipo | Descrição | necessidade |
---|---|---|---|
| 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. 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 usar qualquer analisador do MongoDB Search, exceto o seguinte:
Tokenizadores de analisador personalizado e filtros de token:
| Obrigatório |
| 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 |
| documento | Coleção de fontes para sinônimos. A opção | Obrigatório |
| string | Nome da coleção MongoDB que está no mesmo banco de dados que o índice MongoDB Search. Os documentos nesta coleção devem estar no formato descrito nos Documentos da Coleção da 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 camada grátis, 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 |
---|---|---|---|
| array de strings | Obrigatório para mapeamentos Para mapeamentos do | Condicional |
| string | Tipo de mapeamento. O valor pode ser um dos seguintes: | Obrigatório |
| array de strings | Palavras que são sinônimas umas das outras se 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 MongoDB 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 MongoDB 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. A Pesquisa do MongoDB 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 MongoDB Search observa as alterações e atualiza automaticamente seu mapa interno de sinônimos.
O tempo que o MongoDB 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 MongoDB Search.
Exemplos de documentos de coleção
Exemplos de documentos de collection de fonte
O Atlas fornece os documentos para os seguintes exemplos de tipo de mapeamento do MongoDB Search em uma coleção sample_synonyms
chamada. 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
mappingType
No seguinte exemplo de documento de coleção de origem, o mappingType
é definido como equivalent
para que os tokens car
, vehicle
e automobile
sejam configurados como sinônimos entre si.
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
Para uma query de texto car
para, vehicle
ou automobile
aplicando um mapeamento de sinônimo que inclua tal documento, o MongoDB Search retorna documentos que contenham o car
termo, vehicle
automobile
ou.
explicit
mappingType
No seguinte exemplo de documento da coleção de origem, mappingType
é definido como explicit
para que os tokens beer
, brew
e pint
sejam configurados como sinônimos do token input
beer
.
{ "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, a Pesquisa do MongoDB retorna documentos que contenham os termos "cerveja", "cerva" ou "breja" porque o input
token beer
está explicitamente mapeado a todos esses synonyms
tokens . No entanto, para uma query pint
para, a MongoDB Search não localiza documentos que contenham beer
porque pint
não está explicitamente mapeado beer
para.
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
.
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"] }