Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Filtros de caracteres

Os filtros de caracteres examinam o texto de um caractere de cada vez e executam operações de filtragem. Os filtros de caracteres exigem um campo de tipo, e alguns também aceitam opções adicionais.

Sintaxe
"charFilters": [
{
"type": "<filter-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.


➤ Use o menu descartar Selecione sua interface para definir o método para executar os exemplos nesta página.


A pesquisa do MongoDB suporta os seguintes tipos de filtro de caracteres:

O filtro de caracteres htmlStrip remove as construções HTML.

O filtro de caracteres htmlStrip tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição

type

string

sim

Etiqueta legível para humanos que identifica este tipo de filtro de caracteres. O valor deve ser htmlStrip.

ignoredTags

array de strings

sim

Lista que contém as marcações HTML a serem excluídas da filtragem.

O exemplo de definição de índice a seguir indexa o campo text.en_US na collection de minutos usando um analisador personalizado chamado htmlStrippingAnalyzer. O analisador personalizado especifica o seguinte:

  • Remova todas as marcações HTML do texto, exceto a marcação a , usando o filtro de caracteres htmlStrip .

  • Generate tokens based on word break rules from the Unicode Text Segmentation algorithm using the standard tokenizer.

A query a seguir procura ocorrências da string head no text.en_US campo da minutes collection .

O MongoDB Search não retorna o documento com _id: 1 porque a string head faz parte da marcação HTML <head>. O documento com _id: 3 contém tags HTML, mas a string head está em outro lugar, então o documento é uma correspondência. A tabela a seguir mostra os tokens que o MongoDB Search gera para os valores de campo text.en_US nos documentos _id: 1, _id: 2 e _id: 3 na coleção de minutos usando o htmlStrippingAnalyzer.

ID do documento
Tokens de saída

_id: 1

This, page, deals, with, department, meetings

_id: 2

The, head, of, the, sales, department, spoke, first

_id: 3

We'll, head, out, to, the, conference, room, by, noon

O filtro de caractere icuNormalize normaliza o texto com o UTI Normalizer. É baseado no ICUNormalizer2CharFilter da Lucene.

O filtro de caracteres icuNormalize tem o seguinte atributo:

Nome
Tipo
Obrigatório?
Descrição

type

string

sim

Etiqueta legível para humanos que identifica este tipo de filtro de caracteres. O valor deve ser icuNormalize.

O exemplo de definição de índice a seguir indexa o campo message na collection de minutos usando um analisador personalizado chamado normalizingAnalyzer. O analisador personalizado especifica o seguinte:

  • Normalize o texto no valor do campo message utilizando o filtro de caracteres icuNormalize .

  • Tokenize as palavras no campo com base em ocorrências de espaços em branco entre as palavras usando o tokenizador de espaço em branco .

A seguinte query pesquisar ocorrências da string no (para número) no campo message da collection minutes .

O MongoDB Search combinou o documento com _id: 4 ao termo de query no porque normalizou o símbolo de número no campo usando o filtro de caracteres icuNormalize e criou o token no para essa abreviação tipográfica da palavra "número ". O MongoDB Search gera os seguintes tokens para o valor de campo message no documento _id: 4 usando normalizingAnalyzer:

ID do documento
Tokens de saída

_id: 4

write, down, your, signature, or, phone, no

O filtro de caracteres mapping aplica mapeamentos de normalização especificados pelo usuário a caracteres. Ele é baseado no MappingCharFilterda Lucene.

O filtro de caracteres mapping tem os seguintes atributos:

Nome
Tipo
Obrigatório?
Descrição

type

string

sim

Etiqueta legível para humanos que identifica este tipo de filtro de caracteres.

O valor deve ser mapping.

mappings

objeto

sim

objeto que contém uma lista de mapeamentos separados por vírgula. Um mapeamento indica que um caractere ou grupo de caracteres deve ser substituído por outro, no formato <original> : <replacement>.

O exemplo de definição de índice a seguir indexa o campo page_updated_by.phone na collection de minutos usando um analisador personalizado chamado mappingAnalyzer. O analisador personalizado especifica o seguinte:

  • Remova instâncias de caracteres de hífen (-), ponto (.), abrir parênteses ((), fechar parênteses ( )) e espaços no campo de telefone usando o filtro de caracteres mapping .

  • Tokenize toda a entrada como um único token usando a palavra- chave tokenizer.

A query a seguir pesquisa o campo page_updated_by.phone para a string 1234567890.

Os resultados da Pesquisa MongoDB contêm um documento onde os números na string phone correspondem à string de query. O MongoDB Search fez a correspondência do documento com a string de query, embora a query não inclua os parênteses ao redor do código de área do telefone e o hífen entre os números, pois o MongoDB Search removeu esses caracteres usando o filtro de caracteres mapping e criou um único token para o valor do campo . Especificamente, o MongoDB Search gerou o seguinte token para o campo phone no documento com _id: 1:

ID do documento
Tokens de saída

_id: 1

1234567890

O MongoDB Search também corresponderia documento com _id: 1 para pesquisas para (123)-456-7890, 123-456-7890, 123.456.7890 e assim por diante porque, para os campos de Como indexar campos de strings, o MongoDB Search também analisa termos de query de pesquisa usando o analisador de índice (ou se especificado, usando o searchAnalyzer). A tabela a seguir mostra os tokens que o MongoDB Search cria removendo instâncias de hífen (-), ponto (.), abertura de parêntese ((), fechamento de parêntese ( )) e caracteres de espaço na query termo:

Termo de query
Tokens de saída

(123)-456-7890

1234567890

123-456-7890

1234567890

123.456.7890

1234567890

O filtro de caracteres persian substitui as instâncias de não ligadores de largura zero pelo caractere de espaço. Este filtro de caracteres é baseado no PersianCharFilterda Lucene.

O filtro de caracteres persian tem o seguinte atributo:

Nome
Tipo
Obrigatório?
Descrição

type

string

sim

Etiqueta legível para humanos que identifica este tipo de filtro de caracteres. O valor deve ser persian.

O exemplo de definição de índice a seguir indexa o campo text.fa_IR na collection de minutos usando um analisador personalizado chamado persianCharacterIndex. O analisador personalizado especifica o seguinte:

  • Aplique o filtro de caracteres persian para substituir caracteres não imprimíveis no valor do campo pelo caractere de espaço.

  • Use o tokenizador de espaço em branco para criar tokens com base em ocorrências de espaço em branco entre as palavras.

A query a seguir pesquisa o campo text.fa_IR para o termo صحبت.

A pesquisa do MongoDB retorna o documento _id: 2 que contém o termo de query . O MongoDB Search corresponde o termo da query ao documento primeiro substituindo instâncias de não-joiners de largura zero pelo caractere de espaço e, em seguida, criando tokens individuais para cada palavra no valor do campo com base em ocorrências de espaços em branco entre as palavras. Especificamente, o MongoDB Search gera os seguintes tokens para documento com _id: 2:

ID do documento
Tokens de saída

_id: 2

ابتدا, رئیس, بخش, فروش, صحبت, کرد

Para ver definições adicionais de índice e queries que usam o filtro de caracteres mapping, consulte os seguintes exemplos de páginas de referência: