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

Tokenizadores

Nesta página

  • edgeGram
  • Atributos
  • Exemplo
  • keyword
  • Atributos
  • Exemplo
  • nGram
  • Atributos
  • Exemplo
  • regexCaptureGroup
  • Atributos
  • Exemplo
  • regexSplit
  • Atributos
  • Exemplo
  • padrão
  • Atributos
  • Exemplo
  • uaxUrlEmail
  • Atributos
  • Exemplo
  • whitespace
  • Atributos
  • Exemplo

Um tokenizador do analisador customizado determina como o Atlas Search divide o texto em blocos discretos para indexação. Os tokenizadores exigem um campo de tipo e alguns também aceitam opções adicionais.

"tokenizer": {
"type": "<tokenizer-type>",
"<additional-option>": "<value>"
}

As seguintes definições de índice de amostra e queries usam a coleção de amostras minutes chamada. Se você adicionar a coleção minutes a um banco de dados em seu cluster do Atlas, poderá criar os seguintes índices de amostra do Editor Visual ou do Editor JSON na IU do Atlas e executar as consultas de amostra nessa coleção. Para criar esses índices, depois de selecionar seu método de configuração preferido na IU do Atlas, selecione o banco de dados e a collection, e refine o índice para adicionar analisadores customizados que empregam tokenizadores.

Observação

Quando você adiciona um analisador personalizado usando o Visual Editor na interface do usuário do Atlas, a interface do usuário do Atlas exibe os seguintes detalhes sobre o analisador na seção Custom Analyzers.

Nome
Etiqueta que identifica o analisador customizado.
Usado em
Campos que usam o analisador customizado. O valor é Nenhum se o analisador customizado não for usado para analisar quaisquer campos.
Filtros de caracteres
Filtros de caracteres do Atlas Search configurados no analisador customizado.
Tokenizador
Atlas Search tokenizador configurado no analisador customizado.
Filtros de token
Filtros de token do Atlas Search configurados no analisador customizado.
Ações

Ícones clicáveis que indicam as ações que você pode executar no analisador customizado.

  • Clique em para editar o analisador customizado.

  • Clique para excluir o analisador customizado.

O tokenizador edgeGram tokeniza a entrada do lado esquerdo, ou a "borda", de uma entrada de texto em n-gramas de determinados tamanhos. Você não pode usar um analisador personalizado com o tokenizador EdgeGram no campo analyzer para definições de mapeamento de campo de sinônimos ou preenchimento automático.

Tem os seguintes atributos:

Observação

O tokenizador edgeGram produz vários tokens de saída por palavra e entre palavras no texto de entrada, produzindo gráficos de tokens.

Como os mapeadores e definições de mapeamento de tipo de campo de preenchimento automático com sinônimo funcionam somente quando utilizados com tokenizadores não produtores de gráficos, você não pode utilizar um analisador personalizado com edgeGram tokenizador no campo analyzer para preenchimento automático de definições de mapeamento de tipo de campo ou analisadores com mapeamento de sinônimos.

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser edgeGram.
minGram
inteiro
sim
Número de caracteres a serem incluídos no token mais curto criado.
maxGram
inteiro
sim
Número de caracteres a incluir no token mais longo criado.

A seguinte definição de índice indexa o campo message na coleção minutes utilizando um analisador customizado denominado edgegramExample. Ele usa o edgeGram tokenizador para criar tokens (termos pesquisáveis) entre 2 e 7 caracteres a partir do primeiro caractere no lado esquerdo das palavras no campo message.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite edgegramExample no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione edgeGram no menu suspenso e digite o valor para os seguintes campos:

    Campo
    Valor
    minGram
    2
    maxGram
    7
  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo mensagem.

  8. Selecione a mensagem na lista suspensa Field Name e Cadeia de caracteres na lista suspensa Data Type .

  9. Na seção de propriedades do tipo de dados, selecione edgegramExample nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "edgegramExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "edgegramExample",
"tokenFilters": [],
"tokenizer": {
"maxGram": 7,
"minGram": 2,
"type": "edgeGram"
}
}
]
}

A seguinte query pesquisa o campo message na coleção minutes para texto que começa com tr.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "tr",
6 "path": "message"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "message": 1
14 }
15 }
16])
{ _id: 1, message: 'try to siGn-In' },
{ _id: 3, message: 'try to sign-in' }

O Atlas Search retorna documentos com _id: 1 e _id: 3 nos resultados porque o Atlas Search criou um token com o valor tr usando o tokenizador edgeGram para os documentos, o que corresponde ao termo de pesquisa. Se você indexar o campo message usando o tokenizador standard, o Atlas Search não retornará nenhum resultado para o termo de pesquisa tr.

A tabela a seguir mostra os tokens que o tokenizador edgeGram e, por comparação, o tokenizador standard criam para os documentos nos resultados:

Tokenizador
Token Outputs
standard
try, to, sign, in
edgeGram
tr, try, try{SPACE}, try t, try to, try to{SPACE}

O keyword tokenizador tokeniza toda a entrada como um token único. O Atlas Search não indexa campos de strings que excedam 32766 caracteres usando o tokenizador keyword .

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser keyword.

A seguinte definição de índice indexa o campo message na coleção minutes utilizando um analisador customizado denominado keywordExample. Ele usa o tokenizador keyword para criar um token (termos pesquisáveis) em todo o campo como um único termo.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite keywordExample no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione keyword no menu suspenso.

  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo mensagem.

  8. Selecione a mensagem na lista suspensa Field Name e Cadeia de caracteres na lista suspensa Data Type .

  9. Na seção de propriedades do tipo de dados, selecione keywordExample nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "keywordExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "keywordExample",
"tokenFilters": [],
"tokenizer": {
"type": "keyword"
}
}
]
}

A seguinte consulta pesquisa o campo message na coleção minutes para a frase try to sign-in.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "try to sign-in",
6 "path": "message"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "message": 1
14 }
15 }
16])
{ _id: 3, message: 'try to sign-in' }

A Atlas Search retorna o documento com _id: 3 nos resultados porque o Atlas Search criou um token com o valor try to sign-in usando o tokenizador de keyword para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo message usando o tokenizador standard , o Atlas Search retornará documentos com _id: 1, _id: 2 e _id: 3 para o termo de pesquisa try to sign-in porque cada documento contém alguns dos tokens criados pelo tokenizador standard .

A tabela a seguir mostra os tokens que o tokenizador keyword e, em comparação, o tokenizador standard, criam para o documento com _id: 3:

Tokenizador
Token Outputs
standard
try, to, sign, in
keyword
try to sign-in

O nGram tokenizador tokeniza em blocos de texto, ou "n-grams", de determinados tamanhos. Você não pode utilizar um analisador customizado com token nGram no analyzer campo para sinônimo ou autocompletar definições de mapeamento de campo.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser nGram.
minGram
inteiro
sim
Número de caracteres a serem incluídos no token mais curto criado.
maxGram
inteiro
sim
Número de caracteres a incluir no token mais longo criado.

A seguinte definição de índice indexa o campo title na coleção minutes utilizando um analisador personalizado denominado ngramExample. Ele usa o token nGram para criar tokens (termos pesquisáveis) entre 4 e 6 caracteres no campo title.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite ngramExample no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione nGram no menu suspenso e digite o valor para os seguintes campos:

    Campo
    Valor
    minGram
    4
    maxGram
    6
  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo título.

  8. Selecione título no menu suspenso Field Name e Cadeia de caracteres no menu suspenso Data Type.

  9. Na seção de propriedades do tipo de dados, selecione ngramExample nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"title": {
"analyzer": "ngramExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "ngramExample",
"tokenFilters": [],
"tokenizer": {
"maxGram": 6,
"minGram": 4,
"type": "nGram"
}
}
]
}

A query a seguir pesquisa o termo week no campo title na coleção minutes.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "week",
6 "path": "title"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "title": 1
14 }
15 }
16])
{ _id: 1, title: "The team's weekly meeting" }

O Atlas Search retorna o documento com _id: 1 nos resultados porque o Atlas Search criou um token com o valor week usando o tokenizador nGram para os documentos, que corresponde ao termo de pesquisa. Se você indexar o title campo usando o standard ou edgeGram o tokenizador, o Atlas Search não retornará nenhum resultado para o termo de pesquisa week.

A tabela a seguir mostra os tokens que o tokenizador nGram e, por comparação, os tokenizadores standard e edgeGram criam para o documento com _id: 1:

Tokenizador
Token Outputs
standard
The, team's, weekly, meeting
edgeGram
The{SPACE}, The t , The te
nGram
The{SPACE}, The t, The te, he t, ... , week, weekl, weekly, eekl, ..., eetin, eeting, etin, eting, ting

O tokenizador regexCaptureGroup corresponde a um padrão de expressão regular para extrair tokens.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser regexCaptureGroup.
pattern
string
sim
Expressão regular para correspondência.
group
inteiro
sim
Índice do grupo de caracteres dentro da expressão correspondente para extrair em tokens. Use 0 para extrair todos os grupos de caracteres.

A seguinte definição de índice indexa o campo page_updated_by.phone na coleção minutes utilizando um analisador personalizado denominado phoneNumberExtractor. Ele usa:

  • mappings filtro de caracteres para remover parênteses em torno dos três primeiros dígitos e substituir todos os espaços e pontos por traços

  • regexCaptureGroup tokenizador para criar um único token a partir do primeiro número de telefone formatado nos EUA presente na entrada de texto

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite phoneNumberExtractor no campo Analyzer Name.

  4. Expanda Character Filters e clique em Add character filter.

  5. Selecione mapping no menu suspenso e clique em Add mapping.

  6. Insira os seguintes caracteres no campo Original, um de cada vez e deixe o campo Replacement correspondente vazio.

    Original
    Substituição
    -
    .
    (
    )
  7. Clique em Add character filter.

  8. Expanda Tokenizer se estiver recolhido.

  9. Selecione regexCaptureGroup no menu suspenso e digite o valor para os seguintes campos:

    Campo
    Valor
    pattern
    ^\\b\\d{3}[-]?\\d{3}[-]?\\d{4}\\b$
    group
    0
  10. Clique em Add para adicionar o analisador personalizado ao seu índice.

  11. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo page_updated_by.phone.

  12. Selecione page_updated_by.phone no menu suspenso Field Name e String no menu suspenso Data Type.

  13. Na seção de propriedades do tipo de dados, selecione phoneNumberExtractor nos menus suspensos Index Analyzer e Search Analyzer.

  14. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"page_updated_by": {
"fields": {
"phone": {
"analyzer": "phoneNumberExtractor",
"type": "string"
}
},
"type": "document"
}
}
},
"analyzers": [
{
"charFilters": [
{
"mappings": {
" ": "-",
"(": "",
")": "",
".": "-"
},
"type": "mapping"
}
],
"name": "phoneNumberExtractor",
"tokenFilters": [],
"tokenizer": {
"group": 0,
"pattern": "^\\b\\d{3}[-]?\\d{3}[-]?\\d{4}\\b$",
"type": "regexCaptureGroup"
}
}
]
}

A seguinte query pesquisa o campo page_updated_by.phone na coleção minutes para o número de telefone 123-456-9870.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "123-456-9870",
6 "path": "page_updated_by.phone"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "page_updated_by.phone": 1
14 }
15 }
16])
{ _id: 3, page_updated_by: { phone: '(123).456.9870' }

O Atlas Search retorna o documento com _id: 3 nos resultados, pois o Atlas Search criou um token com o valor 123-456-7890 utilizando o token regexCaptureGroup para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.phone usando o tokenizador standard , o Atlas Search retornará todos os documentos do termo de pesquisa 123-456-7890.

A tabela a seguir mostra os tokens que o tokenizador regexCaptureGroup e, em comparação, o tokenizador standard, criam para o documento com _id: 3:

Tokenizador
Token Outputs
standard
123, 456.9870
regexCaptureGroup
123-456-9870

O regexSplit tokenizador divide tokens com um delimitador baseado em expressão regular.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser regexSplit.
pattern
string
sim
Expressão regular para correspondência.

A definição de índice a seguir indexa o field page_updated_by.phone na collection minutes usando um analyzer customizado chamado dashDotSpaceSplitter. Ele usa o tokenizador regexSplit para criar tokens (termos pesquisáveis) a partir de um ou mais hífens, pontos e espaços no campo page_updated_by.phone .

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite dashDotSpaceSplitter no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione regexSplit no menu suspenso e digite o valor para o seguinte campo:

    Campo
    Valor
    pattern
    [-. ]+
  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo page_updated_by.phone.

  8. Selecione page_updated_by.phone no menu suspenso Field Name e String no menu suspenso Data Type.

  9. Na seção de propriedades do tipo de dados, selecione dashDotSpaceSplitter nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"page_updated_by": {
"fields": {
"phone": {
"analyzer": "dashDotSpaceSplitter",
"type": "string"
}
},
"type": "document"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "dashDotSpaceSplitter",
"tokenFilters": [],
"tokenizer": {
"pattern": "[-. ]+",
"type": "regexSplit"
}
}
]
}

A seguinte query pesquisa o campo page_updated_by.phone na coleção minutes para os dígitos 9870.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "9870",
6 "path": "page_updated_by.phone"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "page_updated_by.phone": 1
14 }
15 }
16])
{ _id: 3, page_updated_by: { phone: '(123).456.9870' }

O Atlas Search retorna o documento com _id: 3 nos resultados porque o Atlas Search criou um token com o valor 9870 usando o tokenizador regexSplit para os documentos, que corresponde ao termo de pesquisa. Se você indexar o page_updated_by.phone campo usando o standard tokenizador, o Atlas Search não retornará nenhum resultado para o termo de pesquisa 9870.

A tabela a seguir mostra os tokens que o tokenizador regexCaptureGroup e, em comparação, o tokenizador standard, criam para o documento com _id: 3:

Tokenizador
Token Outputs
standard
123, 456.9870
regexSplit
(123), 456 , 9870

O tokenizador standard tokeniza com base nas regras de quebra de palavras do algoritmo de segmentação de texto Unicode.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser standard.
maxTokenLength
inteiro
no

Comprimento máximo para um único token. Os tokens maiores que este comprimento são divididos em maxTokenLength múltiplos tokens.

Padrão: 255

A seguinte definição de índice indexa o campo message na collection minutes utilizando um analisador customizado denominado standardExample. Ele usa o tokenizer standard e o filtro de token stopword.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite standardExample no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione standard no menu suspenso.

  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo mensagem.

  8. Selecione a mensagem na lista suspensa Field Name e Cadeia de caracteres na lista suspensa Data Type .

  9. Na seção de propriedades do tipo de dados, selecione standardExample nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "standardExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "standardExample",
"tokenFilters": [],
"tokenizer": {
"type": "standard"
}
}
]
}

A query a seguir pesquisa o termo signature no campo message na coleção minutes.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "signature",
6 "path": "message"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "message": 1
14 }
15 }
16])
{ _id: 4, message: 'write down your signature or phone №' }

O Atlas Search retorna o documento com _id: 4 porque o Atlas Search criou um token com o valor signature utilizando o token standard para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo message usando o tokenizador keyword , o Atlas Search não retornará nenhum resultado para o termo de pesquisa signature.

A tabela a seguir mostra os tokens que o tokenizador standard e, por comparação, o analisador keyword, criam para o documento com _id: 4:

Tokenizador
Token Outputs
standard
write, down, your, signature, or, phone
keyword
write down your signature or phone №

O uaxUrlEmail tokenizer tokeniza URLs e endereços de e-mail. Embora uaxUrlEmail o tokenizador tokenize com base nas regras de quebra de palavras do algoritmo de segmentação de texto Unicode, recomendamos usar o uaxUrlEmail tokenizador somente quando o valor do campo indexado incluir URLe endereços de e-mail. Para campos que não incluem URLs ou endereços de e-mail, use o tokenizador padrão para criar tokens com base em regras de quebra de palavras.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser uaxUrlEmail.
maxTokenLength
int
no

Número máximo de caracteres em um token.

Padrão: 255

A definição de índice a seguir indexa o field page_updated_by.email na collection minutes usando um analyzer customizado chamado basicEmailAddressAnalyzer. Ele usa o tokenizador uaxUrlEmail para criar tokens (termos pesquisáveis) a partir de URLse endereços de e-mail no campo page_updated_by.email.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite basicEmailAddressAnalyzer no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione uaxUrlEmail no menu suspenso.

  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo page_updated_by.email.

  8. Selecione page_updated_by.email do {0} menu suspenso Cadeia de caracteres do {1} menu suspenso.

  9. Na seção de propriedades do tipo de dados, selecione basicEmailAddressAnalyzer nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"fields": {
"page_updated_by": {
"fields": {
"email": {
"analyzer": "basicEmailAddressAnalyzer",
"type": "string"
}
},
"type": "document"
}
}
},
"analyzers": [
{
"name": "basicEmailAddressAnalyzer",
"tokenizer": {
"type": "uaxUrlEmail"
}
}
]
}

A query a seguir procura o campo page_updated_by.email na collection minutes para o email lewinsky@example.com.

db.minutes.aggregate([
{
"$search": {
"text": {
"query": "lewinsky@example.com",
"path": "page_updated_by.email"
}
}
},
{
"$project": {
"_id": 1,
"page_updated_by.email": 1
}
}
])
{ _id: 3, page_updated_by: { email: 'lewinsky@example.com' } }

O Atlas Search retorna o documento com _id: 3 nos resultados, pois o Atlas Search criou um token com o valor lewinsky@example.com utilizando o tokenizador uaxUrlEmail para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.email utilizando o tokenizador standard , o Atlas Search retornará todos os documentos para o termo de pesquisa lewinsky@example.com.

A tabela a seguir mostra os tokens que o tokenizador uaxUrlEmail e, em comparação, o tokenizador standard, criam para o documento com _id: 3:

Tokenizador
Token Outputs
standard
lewinsky, example.com
uaxUrlEmail
lewinsky@example.com

A seguinte definição de índice indexa o campo page_updated_by.email na coleção minutes utilizando um analisador personalizado denominado emailAddressAnalyzer. Ele usa:

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite emailAddressAnalyzer no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione uaxUrlEmail no menu suspenso.

  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo page_updated_by.email.

  8. Selecione page_updated_by.email no menu suspenso Field Name e Preenchimento automático no menu suspenso Data Type.

  9. Na seção de propriedades do tipo de dados, selecione emailAddressAnalyzer nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"fields": {
"page_updated_by": {
"fields": {
"email": {
"analyzer": "emailAddressAnalyzer",
"tokenization": "edgeGram",
"type": "autocomplete"
}
},
"type": "document"
}
}
},
"analyzers": [
{
"name": "emailAddressAnalyzer",
"tokenizer": {
"type": "uaxUrlEmail"
}
}
]
}

A query a seguir pesquisa o termo exam no campo page_updated_by.email na coleção minutes.

db.minutes.aggregate([
{
"$search": {
"autocomplete": {
"query": "lewinsky@example.com",
"path": "page_updated_by.email"
}
}
},
{
"$project": {
"_id": 1,
"page_updated_by.email": 1
}
}
])
_id: 3, page_updated_by: { email: 'lewinsky@example.com' } }

O Atlas Search retorna o documento com _id: 3 nos resultados, pois o Atlas Search criou um token com o valor lewinsky@example.com utilizando o tokenizador uaxUrlEmail para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.email utilizando o tokenizador standard , o Atlas Search retornará todos os documentos para o termo de pesquisa lewinsky@example.com.

A tabela a seguir mostra os tokens que o tokenizador uaxUrlEmail e, em comparação, o tokenizador standard, criam para o documento com _id: 3:

Tokenizador
Tipo de campo do Atlas Search
Token Outputs
standard
autocomplete edgeGram
le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky, ex, exa, exam, examp, exampl, example, example., example.c, example.co, example.com
uaxUrlEmail
autocomplete edgeGram
le, lew, lewi, lewin, lewins, lewinsk, lewinsky, lewinsky@, lewinsky@e, lewinsky@ex, lewinsky@exa, lewinsky@exam, lewinsky@examp, lewinsky@exampl

O tokenizador whitespace tokeniza com base em ocorrências de espaços em branco entre as palavras.

Tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição
type
string
sim
Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser whitespace.
maxTokenLength
inteiro
no

Comprimento máximo para um único token. Os tokens maiores que este comprimento são divididos em maxTokenLength múltiplos tokens.

Padrão: 255

A seguinte definição de índice indexa o campo message na coleção minutes utilizando um analisador personalizado denominado whitespaceExample. Ele utiliza o token whitespace para criar tokens (termos pesquisáveis) a partir de quaisquer espaços em branco no campo message.

  1. Na seção Custom Analyzers, clique em Add Custom Analyzer.

  2. Selecione o botão de opção Create Your Own e clique em Next.

  3. Digite whitespaceExample no campo Analyzer Name.

  4. Expanda Tokenizer se estiver recolhido.

  5. Selecione whitespace no menu suspenso.

  6. Clique em Add para adicionar o analisador personalizado ao seu índice.

  7. Na seção Field Mappings, clique em Add Field Mapping para aplicar o analisador personalizado no campo mensagem.

  8. Selecione a mensagem na lista suspensa Field Name e Cadeia de caracteres na lista suspensa Data Type .

  9. Na seção de propriedades do tipo de dados, selecione whitespaceExample nos menus suspensos Index Analyzer e Search Analyzer.

  10. Clique em Add e depois em Save Changes.

Substitua a definição de índice padrão pelo seguinte:

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "whitespaceExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "whitespaceExample",
"tokenFilters": [],
"tokenizer": {
"type": "whitespace"
}
}
]
}

A query a seguir pesquisa o termo SIGN-IN no campo message na coleção minutes.

1db.minutes.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "SIGN-IN",
6 "path": "message"
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 1,
13 "message": 1
14 }
15 }
16])
{ _id: 2, message: 'do not forget to SIGN-IN' }

O Atlas Search retorna o documento com _id: 2 nos resultados, pois o Atlas Search criou um token com o valor SIGN-IN utilizando o token whitespace para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo message usando o tokenizer standard, o Atlas Search retornará documentos com _id: 1, _id: 2 e _id: 3 para o termo de pesquisa SIGN-IN.

A tabela a seguir mostra os tokens que o tokenizador whitespace e, em comparação, o tokenizador standard, criam para o documento com _id: 2:

Tokenizador
Token Outputs
standard
do, not, forget, to, sign, in
whitespace
do, not, forget, to, SIGN-IN

Voltar

Filtros de caracteres