Menu Docs
Página inicial do Docs
/ /

Tokenizadores

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.

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

A pesquisa do MongoDB é compatível com os seguintes tipos de tokenizador:

  • edgeGram

  • keyword

  • nGram

  • regexCaptureGroup

  • regexSplit

  • padrão

  • uaxUrlEmail

  • whitespace

Os exemplos de definições e consultas de índice a seguir usam a coleção de amostras minutes chamada. Para acompanhar esses exemplos, carregue a minutes coleção no cluster e navegue até a Create a Search Index página na interface do usuário do Atlas seguindo as etapas do tutorial Criar um índice de pesquisa do MongoDB . Em seguida, selecione a minutes collection como sua fonte de dados e siga o procedimento de exemplo para criar um índice a partir da UI do Atlas ou mongosh usando.


➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo nesta página.


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"
}
}
]
}
1db.minutes.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "dynamic": true,
6 "fields": {
7 "message": {
8 "analyzer": "edgegramExample",
9 "type": "string"
10 }
11 }
12 },
13 "analyzers": [
14 {
15 "charFilters": [],
16 "name": "edgegramExample",
17 "tokenFilters": [],
18 "tokenizer": {
19 "maxGram": 7,
20 "minGram": 2,
21 "type": "edgeGram"
22 }
23 }
24 ]
25 }
26)

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

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "text": {
    "query": "tr",
    "path": "message"
    }
    }
    }
    SCORE: 0.3150668740272522 _id: "1"
    message: "try to siGn-In"
    page_updated_by: Object
    last_name: "AUERBACH"
    first_name: "Siân"
    email: "auerbach@example.com"
    phone: "(123)-456-7890"
    text: Object
    en_US: "<head> This page deals with department meetings.</head>"
    sv_FI: "Den här sidan behandlar avdelningsmöten"
    fr_CA: "Cette page traite des réunions de département"
    SCORE: 0.3150668740272522 _id: "3"
    message: "try to sign-in"
    page_updated_by: Object
    last_name: "LEWINSKY"
    first_name: "Brièle"
    email: "lewinsky@example.com"
    phone: "(123).456.9870"
    text: Object
    en_US: "<body>We'll head out to the conference room by noon.</body>"
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 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

standard

try, to, sign, in

edgeGram

tr, try, try{SPACE}, try t, try to, try to{SPACE}

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 .

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:

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "message": {
6 "analyzer": "keywordExample",
7 "type": "string"
8 }
9 }
10 },
11 "analyzers": [
12 {
13 "charFilters": [],
14 "name": "keywordExample",
15 "tokenFilters": [],
16 "tokenizer": {
17 "type": "keyword"
18 }
19 }
20 ]
21}
1db.minutes.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "dynamic": true,
6 "fields": {
7 "message": {
8 "analyzer": "keywordExample",
9 "type": "string"
10 }
11 }
12 },
13 "analyzers": [
14 {
15 "charFilters": [],
16 "name": "keywordExample",
17 "tokenFilters": [],
18 "tokenizer": {
19 "type": "keyword"
20 }
21 }
22 ]
23 }
24)

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

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "text": {
    "query": "try to sign-in",
    "path": "message"
    }
    }
    }
    SCORE: 0.5472603440284729 _id: "3"
    message: "try to sign-in"
    page_updated_by: Object
    last_name: "LEWINSKY"
    first_name: "Brièle"
    email: "lewinsky@example.com"
    phone: "(123).456.9870"
    text: Object
    en_US: "<body>We'll head out to the conference room by noon.</body>"
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' }

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

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 ngramAnalyzer 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 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 ngramAnalyzer 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:

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "title": {
6 "analyzer": "ngramExample",
7 "type": "string"
8 }
9 }
10 },
11 "analyzers": [
12 {
13 "charFilters": [],
14 "name": "ngramExample",
15 "tokenFilters": [],
16 "tokenizer": {
17 "maxGram": 6,
18 "minGram": 4,
19 "type": "nGram"
20 }
21 }
22 ]
23}
db.minutes.createSearchIndex("default", {
"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.

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "index": "default",
    "text": {
    "query": "week",
    "path": "title"
    }
    }
    }
    SCORE: 0.5895273089408875 _id: "1"
    message: "try to siGn-In"
    page_updated_by: Object
    last_name: "AUERBACH"
    first_name: "Siân"
    email: "auerbach@example.com"
    phone: "(123)-456-7890"
    text: Object
    en_US: "<head> This page deals with department meetings.</head>"
    sv_FI: "Den här sidan behandlar avdelningsmöten"
    fr_CA: "Cette page traite des réunions de département"
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 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

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 Java para extrair tokens.

Dica

Para saber mais sobre a sintaxe de expressão regular Java, consulte a classe Padrão na documentação Java.

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 exemplo:

{
"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"
}
}
]
}
db.minutes.createSearchIndex("default", {
"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.

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "index": "default",
    "text": {
    "query": "123-456-9870",
    "path": "page_updated_by.phone"
    }
    }
    }
    SCORE: 0.5472603440284729 _id: "3"
    message: "try to sign-in"
    page_updated_by: Object
    last_name: "LEWINSKY"
    first_name: "Brièle"
    email: "lewinsky@example.com"
    phone: "(123).456.9870"
    text: Object
    en_US: "<body>We'll head out to the conference room by noon.</body>"
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 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

standard

123, 456.9870

regexCaptureGroup

123-456-9870

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.

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"
}
}
]
}
db.minutes.createSearchIndex("default", {
"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.

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "index": "default",
    "text": {
    "query": "9870",
    "path": "page_updated_by.phone"
    }
    }
    }
    SCORE: 0.5472603440284729 _id: "3"
    message: "try to sign-in"
    page_updated_by: Object
    last_name: "LEWINSKY"
    first_name: "Brièle"
    email: "lewinsky@example.com"
    phone: "(123).456.9870"
    text: Object
    en_US: "<body>We'll head out to the conference room by noon.</body>"
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 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

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"
}
}
]
}
1db.minutes.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "dynamic": true,
6 "fields": {
7 "message": {
8 "analyzer": "standardExample",
9 "type": "string"
10 }
11 }
12 },
13 "analyzers": [
14 {
15 "charFilters": [],
16 "name": "standardExample",
17 "tokenFilters": [],
18 "tokenizer": {
19 "type": "standard"
20 }
21 }
22 ]
23 }
24)

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

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "text": {
    "query": "signature",
    "path": "message"
    }
    }
    }
    SCORE: 0.5376965999603271 _id: "4"
    message: "write down your signature or phone №"
    page_updated_by: Object
    last_name: "LEVINSKI"
    first_name: "François"
    email: "levinski@example.com"
    phone: "123-456-8907"
    text: Object
    en_US: "<body>This page has been updated with the items on the agenda.</body>"
    es_MX: "La página ha sido actualizada con los puntos de la agenda."
    pl_PL: "Strona została zaktualizowana o punkty porządku obrad."
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 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

standard

write, down, your, signature, or, phone

keyword

write down your signature or phone №

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 apenas 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 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

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 exemplo:

{
"mappings": {
"dynamic": true,
"fields": {
"message": {
"analyzer": "whitespaceExample",
"type": "string"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "whitespaceExample",
"tokenFilters": [],
"tokenizer": {
"type": "whitespace"
}
}
]
}
db.minutes.createSearchIndex("default", {
"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.

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    {
    "$search": {
    "text": {
    "query": "sign-in",
    "path": "message"
    }
    }
    }
    SCORE: 0.6722691059112549 _id: "3"
    message: "try to sign-in"
    page_updated_by: Object
    last_name: "LEWINSKY"
    first_name: "Brièle"
    email: "lewinsky@example.com"
    phone: "(123).456.9870"
    text: Object
    en_US: "<body>We'll head out to the conference room by noon.</body>"
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: 3, message: '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 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

standard

try, to, sign, in

whitespace

try, to , sign-in

Voltar

Filtros de caracteres

Nesta página