Um tokenizador do analisador customizado determina como o MongoDB 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 definições e queries de índice de amostra nesta página usam a coleção de amostras denominada minutes. Para experimentar esses exemplos, carregue a coleção minutes no seu cluster e navegue até a página Create a Search Index na IU do Atlas seguindo as etapas do tutorial Criar um índice de pesquisa do MongoDB. Em seguida, selecione a coleção minutes como sua fonte de dados e siga o procedimento de exemplo para criar um índice na IU do Atlas ou usando mongosh.
edgeGram
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.
Atributos
O tokenizador edgeGram 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 |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| inteiro | sim | Número de caracteres a serem incluídos no token mais curto criado. |
| inteiro | sim | Número de caracteres a incluir no token mais longo criado. |
Exemplo
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.
A seguinte query pesquisa o campo message na coleção minutes para texto que começa com tr.
O MongoDB Search retorna documentos com _id: 1 e _id: 3 nos resultados porque o MongoDB 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 MongoDB 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 |
|---|---|
|
|
|
|
keyword
O tokenizador keyword tokeniza toda a entrada como um único token. O MongoDB Search não indexa campos de strings que excedam 32766 caracteres usando o tokenizador keyword .
Atributos
O tokenizador keyword tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
Exemplo
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.
A seguinte consulta pesquisa o campo message na coleção minutes para a frase try to sign-in.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB 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 MongoDB 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 do standard o tokenizador cria.
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 |
|---|---|
|
|
|
|
nGram
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.
Atributos
O tokenizador nGram tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| inteiro | sim | Número de caracteres a serem incluídos no token mais curto criado. |
| inteiro | sim | Número de caracteres a incluir no token mais longo criado. |
Exemplo
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.
A query a seguir pesquisa o termo week no campo title na coleção minutes.
O MongoDB Search retorna o documento com _id: 1 nos resultados porque o MongoDB Search criou um token com o valor week usando o tokenizador de nGram para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo title usando o tokenizador standard ou edgeGram , o MongoDB 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 |
|---|---|
|
|
|
|
|
|
regexCaptureGroup
O tokenizador regexCaptureGroup corresponde a um padrão de expressão regular Java para extrair tokens.
Dica
Para saber mais sobre a sintaxe de expressão regular do Java, consulte a classe Pattern na documentação do Java.
Atributos
O tokenizador regexCaptureGroup tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| string | sim | Expressão regular para correspondência. |
| inteiro | sim | Índice do grupo de caracteres dentro da expressão correspondente para extrair em tokens. Use |
Exemplo
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:
mappingsfiltro de caracteres para remover parênteses em torno dos três primeiros dígitos e substituir todos os espaços e pontos por traçosregexCaptureGrouptokenizador para criar um único token a partir do primeiro número de telefone formatado nos EUA presente na entrada de texto
A seguinte query pesquisa o campo page_updated_by.phone na coleção minutes para o número de telefone 123-456-9870.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB Search criou um token com o valor 123-456-7890 usando o tokenizador de regexCaptureGroup para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.phone usando o tokenizador standard , o MongoDB 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 |
|---|---|
|
|
|
|
regexSplit
O tokenizador regexSplit divide tokens com um delimitador baseado na expressão regular do Java.
Dica
Para saber mais sobre a sintaxe de expressão regular do Java, consulte a classe Pattern na documentação do Java.
Atributos
O tokenizador regexSplit tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| string | sim | Expressão regular para correspondência. |
Exemplo
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 .
A seguinte query pesquisa o campo page_updated_by.phone na coleção minutes para os dígitos 9870.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB Search criou um token com o valor 9870 usando o tokenizador de regexSplit para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.phone usando o tokenizador standard , o MongoDB 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 |
|---|---|
|
|
|
|
padrão
O tokenizador standard tokeniza com base nas regras de quebra de palavras do algoritmo de segmentação de texto Unicode.
Atributos
O tokenizador standard tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| inteiro | no | Comprimento máximo para um único token. Os tokens maiores que este comprimento são divididos em Padrão: |
Exemplo
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.
A query a seguir pesquisa o termo signature no campo message na coleção minutes.
O MongoDB Search retorna o documento com _id: 4 porque o MongoDB Search criou um token com o valor signature usando o tokenizador standard para os documentos, que corresponde ao termo de pesquisa . Se você indexar o campo message usando o tokenizador keyword , o MongoDB 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 |
|---|---|
|
|
|
|
uaxUrlEmail
O tokenizador uaxUrlEmail tokeniza URLs e endereços de e-mail. Embora o tokenizador uaxUrlEmail tokenize com base nas regras de quebra de palavras do algoritmo de segmentação de texto Unicode, recomendamos usar o tokenizador uaxUrlEmail somente quando o valor do campo indexado incluir URLs e 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 nas regras de quebra de palavras.
Atributos
O tokenizador uaxUrlEmail tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| int | no | Número máximo de caracteres em um token. Padrão: |
Exemplo
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.
A query a seguir procura o campo page_updated_by.email na collection minutes para o email lewinsky@example.com.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB Search criou um token com o valor lewinsky@example.com usando o tokenizador de uaxUrlEmail para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.email usando o tokenizador standard , o MongoDB 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 |
|---|---|
|
|
|
|
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:
O tipo autocomplete com uma estratégia de tokenização
edgeGramO tokenizador
uaxUrlEmailpara criar tokens (termos pesquisáveis) a partir de URLse endereços de e-mail
A query a seguir pesquisa o termo exam no campo page_updated_by.email na coleção minutes.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB Search criou um token com o valor lewinsky@example.com usando o tokenizador de uaxUrlEmail para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo page_updated_by.email usando o tokenizador standard , o MongoDB 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 de pesquisa do MongoDB | Token Outputs |
|---|---|---|
|
|
|
|
|
|
whitespace
O tokenizador whitespace tokeniza com base em ocorrências de espaços em branco entre as palavras.
Atributos
O tokenizador whitespace tem os seguintes atributos:
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
| string | sim | Etiqueta legível por humanos que identifica este tipo de tokenizador. O valor deve ser |
| inteiro | no | Comprimento máximo para um único token. Os tokens maiores que este comprimento são divididos em Padrão: |
Exemplo
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.
A query a seguir pesquisa o termo SIGN-IN no campo message na coleção minutes.
O MongoDB Search retorna o documento com _id: 3 nos resultados porque o MongoDB Search criou um token com o valor sign-in usando o tokenizador de whitespace para os documentos, que corresponde ao termo de pesquisa. Se você indexar o campo message usando o tokenizador standard , o MongoDB 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: 3:
Tokenizador | Token Outputs |
|---|---|
|
|
|
|