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

Analisador múltiplo

Nesta página

  • Limitações
  • Exemplos
  • Exemplo de Campo Único
  • Exemplo de Múltiplos Campos

Você pode usar o objeto multi em sua definição de índice para especificar analisadores alternativos com os quais também indexar o campo. Quando indexa um campo com analisadores alternativos além do analisador padrão, você pode pesquisar a coleção com o analisador padrão ou alternativo. Esta página demonstra como especificar analisadores alternativos na sua definição de índice usando multi. Para saber mais sobre como pesquisar com analisadores alternativos, consulte Construir um caminho de consulta.

A opção de caminho do multi está disponível somente para campos do tipo string.

O Atlas Search não suporta o aninhamento de várias camadas de objetos multi.

Os exemplos a seguir demonstram definições de índice nos campos da coleção sample_mflix.movies. Se você carregou a coleção no seu cluster, poderá criar os índices de exemplo usando o Editor Visual ou o Editor JSON na interface do usuário do Atlas. Depois de selecionar seu método de configuração preferido, selecione o banco de dados e a coleção para definir o índice.

O exemplo de definição de índice a seguir especifica um índice no campo title usando o analisador standard. A definição do índice também especifica o analisador lucene.french como um analisador alternativo para o campo title, com o nome frenchAnalyzer.

  1. Clique em Refine Your Index para configurar seu índice.

  2. Na seção Field Mappings, clique em Add Field para abrir a janela Add Field Mapping.

  3. Selecione title no menu suspenso Field Name.

  4. Clique no menu suspenso Data Type e selecione String se ainda não estiver selecionado.

  5. Expanda o String Properties e faça as seguintes alterações:

    Analisador de índice

    Selecione lucene.standard no menu suspenso se ainda não estiver selecionado.

    Analisador de pesquisa

    Selecione lucene.standard no menu suspenso se ainda não estiver selecionado.

    Opções de índice

    Use o offsets padrão.

    Store

    Use o true padrão.

    Ignorar acima

    Manter a configuração padrão.

    Normas

    Use o include padrão.

  6. Clique em Add Multi Field para configurar outro analyzer no campo title .

  7. Insira frenchAnalyzer no campo Multi Field Name .

  8. Faça as seguintes alterações em Multi Field Properties:

    Analisador de índice

    Selecione lucene.french no menu suspenso se ainda não estiver selecionado.

    Analisador de pesquisa

    Selecione lucene.french no menu suspenso se ainda não estiver selecionado.

    Opções de índice

    Use o offsets padrão.

    Store

    Use o true padrão.

    Ignorar acima

    Manter a configuração padrão.

    Normas

    Use o include padrão.

  9. Clique em Add.

  10. Clique em Save Changes.

  11. Clique em Create Search Index.

  1. Substitua a definição de índice padrão pela seguinte definição de índice.

    1{
    2 "mappings": {
    3 "dynamic": false,
    4 "fields": {
    5 "title": {
    6 "type": "string",
    7 "analyzer": "lucene.standard",
    8 "multi": {
    9 "frenchAnalyzer": {
    10 "type": "string",
    11 "analyzer": "lucene.french"
    12 }
    13 }
    14 }
    15 }
    16 }
    17}
  2. Clique em Next.

  3. Clique em Create Search Index.

A query a seguir usa o analisador alternativo, chamado frenchAnalyzer, para pesquisar a string liberte.

1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "liberte",
6 "path": { "value": "title", "multi": "frenchAnalyzer" }
7 }
8 }
9 },
10 {
11 "$project": {
12 "title": 1,
13 "year": 1,
14 "_id": 0
15 }
16 }
17])
[ { title: 'è Nous la Libertè', year: 1931 } ]

O documento nos resultados é uma correspondência porque o frenchAnalyzer reduziu tanto a string indexada è Nous la Libertè quanto o termo de consulta liberte à palavra base libert. O Atlas Search não retornará este documento em uma pesquisa com o analisador standard porque ele não remove diacríticos. Cada analisador gera os seguintes tokens (termos pesquisáveis) para o índice e a consulta:

Analisador
Index Tokens
Tokens de consulta

Analisador padrão

è, nous, la, libertè

libertè

Analisador Francês

è, libert

libert

A definição de exemplo de índice a seguir especifica um índice nos campos title e plot usando o analisador standard. A definição do índice também especifica lucene.french como um analisador alternativo para os campos title e plot.

  1. Clique em Refine Your Index para configurar seu índice.

  2. Na seção Field Mappings, clique em Add Field para abrir a janela Add Field Mapping.

  3. Selecione title no menu suspenso Field Name.

  4. Clique no menu suspenso Data Type e selecione String se ainda não estiver selecionado.

  5. Expanda o String Properties e faça as seguintes alterações:

    Analisador de índice

    Selecione lucene.standard no menu suspenso se ainda não estiver selecionado.

    Analisador de pesquisa

    Selecione lucene.standard no menu suspenso se ainda não estiver selecionado.

    Opções de índice

    Use o offsets padrão.

    Store

    Use o true padrão.

    Ignorar acima

    Manter a configuração padrão.

    Normas

    Use o include padrão.

  6. Clique em Add Multi Field para configurar outro analyzer no campo title .

  7. Insira frenchAnalyzer no campo Multi Field Name .

  8. Faça as seguintes alterações em Multi Field Properties:

    Analisador de índice

    Selecione lucene.french no menu suspenso se ainda não estiver selecionado.

    Analisador de pesquisa

    Selecione lucene.french no menu suspenso se ainda não estiver selecionado.

    Opções de índice

    Use o offsets padrão.

    Store

    Use o true padrão.

    Ignorar acima

    Manter a configuração padrão.

    Normas

    Use o include padrão.

  9. Clique em Add.

  10. Clique em Add Field Mapping para abrir a janela Add Field Mapping.

  11. Selecione plot no menu suspenso Field Name.

  12. Repita as etapas 4 a 9.

  13. Clique em Save Changes.

  14. Clique em Create Search Index.

  1. Substitua a definição de índice padrão pela seguinte definição de índice.

    1{
    2 "mappings": {
    3 "dynamic": false,
    4 "fields": {
    5 "title": {
    6 "type": "string",
    7 "analyzer": "lucene.standard",
    8 "multi": {
    9 "frenchAnalyzer": {
    10 "type": "string",
    11 "analyzer": "lucene.french"
    12 }
    13 }
    14 },
    15 "plot": {
    16 "type": "string",
    17 "analyzer": "lucene.standard",
    18 "multi": {
    19 "frenchAnalyzer": {
    20 "type": "string",
    21 "analyzer": "lucene.french"
    22 }
    23 }
    24 }
    25 }
    26 }
    27}
  2. Clique em Next.

  3. Clique em Create Search Index.

A seguinte query busca correspondências para a string revolution nos campos title e plot usando o analisador alternativo chamado frenchAnalyzer.

1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "revolution",
6 "path": ["title", "plot",
7 { "value": "title", "multi": "frenchAnalyzer" },
8 { "value": "plot", "multi": "frenchAnalyzer" }
9 ]
10 }
11 }
12 },
13 {
14 "$limit": 5
15 },
16 {
17 "$project": {
18 "title": 1,
19 "plot": 1,
20 "year": 1,
21 "_id": 0
22 }
23 }
24])
[
{
year: 2012,
plot: 'REVOLUTION is a film about changing the world, going for it, taking a stand, and fighting for something. A true-life adventure following Director, Rob Stewart (SHARKWATER) over four years ...',
title: 'Revolution'
},
{
plot: 'New York trapper Tom Dobb becomes an unwilling participant in the American Revolution after his son Ned is drafted into the Army by the villainous Sergeant Major Peasy. Tom attempts to find...',
title: 'Revolution',
year: 1985
},
{
plot: "Together with five Soviet avant-garde artists, hero of the Russian revolution Polina Schneider travels to Siberia to 'civilize' the native Khanty and Nenets tribes, for whom interaction ...",
title: 'Angels of Revolution',
year: 2014
},
{
plot: 'Two mismatched sets of identical twins - one aristocrat, one peasant - mistakenly exchange identities on the eve of the French Revolution.',
title: 'Start the Revolution Without Me',
year: 1970
},
{
plot: "A history of the French Revolution from the decision of the king to convene the Etats-Generaux in 1789 in order to deal with France's debt problem. The first part of the movie tells the ...",
title: 'La rèvolution franèaise',
year: 1989
}
]

Os documentos nos resultados contêm o termo de consulta em ambos os campos title e plot. Cada analisador cria os seguintes tokens (termos pesquisáveis) para o campo title de cada documento nos resultados:

Ano

Analisador

Index Tokens

Tokens de consulta

2012

Standard Analyzer
French Analyzer
revolution
revolution
revolution
revolution

1985

Standard Analyzer
French Analyzer
revolution
revolution
revolution
revolution

2014

Standard Analyzer
French Analyzer
angels, of, revolution
angels, of, revolution
revolution
revolution

1970

Standard Analyzer
French Analyzer
start, the, revolution, without, me
start, the, revolution, without
revolution
revolution

1989

Standard Analyzer
French Analyzer
la, rèvolution, franèaise
revolution, franeais
revolution
revolution

Para o quinto documento nos resultados, o frenchAnalyzer removeu os diacríticos no campo title para fazer a correspondência do documento com o termo de consulta.

Voltar

Linguagem