As versões 4,0 e posteriores do Hologres oferecem suporte a um índice invertido de texto completo. Esse recurso é construído sobre o mecanismo de busca de texto completo de alto desempenho Tantivy. Ele também suporta o algoritmo de pontuação de similaridade BM25, permitindo classificação de documentos, busca por palavras-chave e busca por frases.
Como funciona
Ao gravar texto source no Hologres, o sistema cria um arquivo de índice invertido de texto completo para cada arquivo de dados com base na configuração do índice. O processo começa quando um tokenizador divide o texto em tokens. Em seguida, o índice registra o mapeamento de cada token para seu texto source, juntamente com sua posição e frequência do termo.
Durante uma busca de texto completo, o Hologres primeiro tokeniza o texto da consulta em um conjunto de tokens de consulta. Depois, o sistema utiliza o algoritmo BM25 para calcular uma pontuação de relevância de cada texto source em relação ao conjunto de tokens de consulta. Esse processo viabiliza buscas de texto completo com alta precisão e desempenho.
Considerações
No Hologres V4.0 e posterior, os índices invertidos de texto completo são suportados apenas em tabelas de armazenamento colunar e híbrido (linha-coluna), não sendo compatíveis com tabelas de armazenamento por linha.
Crie índices invertidos de texto completo apenas em colunas do tipo TEXT, CHAR ou VARCHAR.
É possível criar apenas um índice invertido de texto completo por coluna. Para indexar várias colunas, crie um índice separado para cada uma.
Após a criação de um índice invertido de texto completo, os arquivos de índice para dados existentes e recém-carregados em massa são construídos de forma assíncrona durante a compactação de dados. Até que o índice seja criado, a pontuação de relevância BM25 para esses dados será 0.
O comportamento de indexação para gravações de dados em tempo real varia conforme a versão. Antes da V4.0.8, os índices eram criados sincronamente. A partir da V4.0.8, para melhorar a eficiência de gravação, o sistema atualiza o índice em memória de forma assíncrona a cada segundo. A consulta de dados usando o índice só é possível após a conclusão de uma atualização.
Realize buscas de texto completo apenas em colunas que possuam um índice invertido de texto completo. Não há suporte para busca em colunas sem índice.
-
Recomendamos o uso de recursos Serverless para importações de dados em massa. Esses recursos executam a compactação e constroem o índice invertido de texto completo sincronamente durante o processo de importação. Para mais informações, consulte Use Serverless Computing to perform read and write tasks e Use Serverless Computing to perform Compaction tasks. Caso não utilize recursos Serverless, recomendamos acionar manualmente a operação compaction após uma importação em massa ou modificação de índice com o seguinte comando.
VACUUM <schema_name>.<table_name>; Por padrão, o algoritmo de busca BM25 calcula as pontuações de relevância com base em estatísticas no nível de arquivo. No Hologres V5.0 e posterior, use o parâmetro
hg_text_search_bm25_statistics_levelpara alternar para a pontuação no nível de shard, o que torna as pontuações comparáveis dentro do mesmo shard. Se você mantiver a pontuação padrão no nível de arquivo e importar dados em pequenos lotes, recomendamos acionar manualmente a compactação conforme necessário para mesclar arquivos de dados e melhorar a precisão da busca.Recursos Serverless podem ser utilizados para executar consultas de busca de texto completo.
-
Utilize a tabela a seguir para escolher o tokenizador adequado ao seu cenário:
Cenário
Tokenizador
Descrição
Extração de palavras-chave de artigos longos
Jieba
Suporta descoberta de novas palavras e alternância de modo complexo.
Busca em texto descritivo em chinês
IK
Identifica termos chineses com precisão.
Busca em texto curto em inglês (estilo título)
Simple, Whitespace, Standard
Simples e eficiente. Escolha um com base no seu texto específico.
Busca aproximada em texto semelhante a logs
Ngram
Independente de dicionário e adequado para consultas de texto aproximado.
Busca baseada em Pinyin para nomes de produtos ou pessoas em chinês
Pinyin
Suporta vários cenários de busca em Pinyin chinês, incluindo Pinyin completo, abreviações de primeiras letras e caracteres com múltiplas pronúncias.
Gerencie índices
Crie um índice
Sintaxe
CREATE INDEX [ IF NOT EXISTS ] idx_name ON table_name
USING FULLTEXT (column_name [ , ... ])
[ WITH ( storage_parameter [ = value ] [ , ... ] ) ];
Parâmetros
|
Parâmetro |
Descrição |
|
idx_name |
O nome do índice. |
|
table_name |
O nome da tabela de destino. |
|
column_name |
A coluna para o índice invertido de texto completo. |
|
storage_parameter |
Especifique os parâmetros para o índice invertido de texto completo. Os seguintes parâmetros são suportados:
Nota
Cada índice suporta apenas um A partir da V4.2, novos índices criados sem especificação explícita de tokenizador usam |
Configure index_options
O parâmetro index_options suporta três níveis. Opções de nível superior incluem automaticamente todas as informações dos níveis inferiores: freqs inclui todas as informações de docs, e positions inclui todas as informações de freqs e docs.
|
Valor |
Conteúdo do índice |
Impacto e limitações |
Casos de uso |
|
positions (padrão) |
ID do documento + frequência do termo + posição |
Suporte completo a recursos: Suporta consultas de frase e pontuação de relevância padrão. |
Cenários gerais de busca de texto completo. |
|
freqs |
ID do documento + frequência do termo |
Consultas de frase não são suportadas e retornam um erro. |
Cenários que exigem pontuação e classificação baseadas na frequência do termo, mas não precisam de correspondência exata de frase. |
|
docs |
Apenas ID do documento |
|
Ideal para cenários sensíveis a armazenamento que requerem apenas verificações de existência (filtragem) e não precisam de pontuação de relevância. |
Para índices que usam o tokenizador keyword, o nível de registro é fixado em docs, e a configuração index_options não se aplica.
Exemplos
-
Crie um índice invertido de texto completo com o tokenizador e configuração padrão (
jiebana V4.1 e anteriores,ikna V4.2 e posteriores).CREATE INDEX idx1 ON tbl USING FULLTEXT (col1); -
Especifique explicitamente o tokenizador
ike use sua configuração padrão.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'ik'); -
Especifique explicitamente uma configuração personalizada de tokenizador: o tokenizador
jiebano modoexactcom apenas o filtrolowercase.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'jieba', analyzer_params = '{"tokenizer":{"type":"jieba","mode":"exact"}, "filter":["lowercase"]}'); -
Defina
index_optionscomofreqsao criar o índice. Isso economiza espaço, mas não suporta consultas de frase. Suportado desde o Hologres V4.1.9.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (index_options = 'freqs');
Após criar um índice invertido de texto completo, a compactação constrói os arquivos de índice depois da importação de dados.
Recomendamos usar recursos de computação serverless para realizar importações em lote. Esses recursos concluem a compactação e constroem o índice invertido de texto completo sincronamente durante a importação de dados. Para mais informações, consulte Use serverless computing to perform read and write tasks e Use serverless computing to perform compaction tasks.
-
Se não utilizar recursos serverless, recomendamos acionar manualmente a compactação após uma importação em lote ou modificação de índice executando o seguinte comando. Para mais informações, consulte Compaction (Beta).
VACUUM <schema_name>.<table_name>;
Modifique um índice
Sintaxe
-- Modify index configuration
ALTER INDEX [ IF EXISTS ] <idx_name> SET ( <storage_parameter> = '<storage_value>' [ , ... ] );
-- Reset to default configuration
ALTER INDEX [ IF EXISTS ] <idx_name> RESET ( <storage_parameter> [ , ... ] );
Parâmetros
Para descrições detalhadas dos parâmetros, consulte Parameters.
Exemplos
Após alterar um índice invertido de texto completo, a compactação constrói os arquivos de índice de forma assíncrona. Recomendamos acionar manualmente a compactação após alterar um índice executando o comando VACUUM <schema_name>.<table_name>;. Para mais informações, consulte Compaction.
-
Altere o tokenizador do índice para
standard.ALTER INDEX idx1 SET (tokenizer = 'standard'); -
Altere o tokenizador do índice para
ikno modoik_max_word, sem conversão para minúsculas e sem filtros.ALTER INDEX idx1 SET ( tokenizer = 'ik', analyzer_params = '{"tokenizer":{"type":"ik","mode":"ik_max_word","enable_lowercase": false}}' ); -
Redefina para o tokenizador padrão
jiebae use sua configuração padrão deanalyzer_params.ALTER INDEX idx1 RESET (tokenizer); ALTER INDEX idx1 RESET (tokenizer, analyzer_params); -
Redefina para a configuração padrão de
analyzer_paramsdo tokenizador atual.ALTER INDEX idx1 RESET (analyzer_params); -
Altere o
index_optionsdo índice paradocs.ALTER INDEX idx1 SET (index_options = 'docs'); -
Redefina
index_optionspara seu valor padrão,positions.ALTER INDEX idx1 RESET (index_options);
Excluir um índice
Sintaxe
DROP INDEX [ IF EXISTS ] <idx_name> [ RESTRICT ];
Parâmetros
Para descrições detalhadas dos parâmetros, consulte Parameters.
Visualize índices
O Hologres fornece a tabela de sistema hologres.hg_index_properties, onde é possível visualizar os índices invertidos de texto completo criados para uma tabela e suas posições correspondentes.
SELECT * FROM hologres.hg_index_properties;
Execute a seguinte instrução SQL para visualizar a tabela e a coluna associadas a um índice.
SELECT
t.relname AS table_name,
a.attname AS column_name
FROM pg_class t
JOIN pg_index i ON t.oid = i.indrelid
JOIN pg_class idx ON i.indexrelid = idx.oid
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(i.indkey)
WHERE t.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '<namespace>')
AND idx.relname = '<indexname>'
LIMIT 1;
Parâmetros:
namespace: O valor do campo
table_namespacena saída do comandoSELECT * FROM hologres.hg_index_properties;.indexname: O nome real do índice.
Visualize progresso de construção do índice
Após criar um índice invertido de texto completo, use a função integrada hg_show_build_index_progress para visualizar o progresso de construção do índice em tempo real. Essa função retorna o status de construção de todos os índices de texto completo na tabela especificada.
Exemplo
SELECT * FROM hg_show_build_index_progress('<table_name>');
Notas de uso
Para chamar essa função, você deve ter a permissão SELECT na tabela especificada.
A função retorna informações de construção para todos os índices de texto completo na tabela, incluindo o número de arquivos construídos, o total de arquivos, o progresso da construção em porcentagem e o tempo restante estimado.
Valores de retorno
O resultado inclui os seguintes campos:
|
Campo |
Tipo de dado |
Descrição |
|
schema_name |
TEXT |
O nome do schema que contém o índice. |
|
table_name |
TEXT |
O nome da tabela. |
|
index_name |
TEXT |
O nome do índice. |
|
index_id |
BIGINT |
O ID exclusivo do índice. |
|
am_name |
TEXT |
O tipo do índice. |
|
built_index_size |
TEXT |
O tamanho do índice que foi construído. |
|
built_num_files |
INTEGER |
O número de arquivos para os quais a construção do índice foi concluída. |
|
target_num_files |
INTEGER |
O número total de arquivos para os quais o índice precisa ser construído. |
|
progress |
TEXT |
O progresso da construção, em porcentagem. |
|
estimated_remaining_time |
TEXT |
O tempo restante estimado para a construção. |
Busca de texto completo usando um índice
O Hologres suporta uma variedade de modos de busca, permitindo adaptar as buscas de texto completo à sua lógica de negócios.
|
Modo de busca |
Descrição |
|
Correspondência de palavra-chave |
Busca palavras-chave em um objeto de busca tokenizado. É possível definir a relação entre palavras-chave usando lógica AND/OR. |
|
Busca por frase |
Busca uma frase completa. Uma correspondência exige que as palavras da frase apareçam dentro de uma distância especificada umas das outras. |
|
Busca em linguagem natural |
Permite definir condições de consulta complexas usando sintaxe de linguagem natural. Inclui especificação de lógica AND/OR, termos obrigatórios, termos excluídos e frases. |
|
Busca por termo |
Realiza uma correspondência exata para o objeto de busca. O índice deve conter a string de consulta exata para retornar uma correspondência. |
Função TEXT_SEARCH
A função TEXT_SEARCH calcula a pontuação de relevância BM25 para uma fonte de busca com base em um objeto de busca.
Sintaxe da função
TEXT_SEARCH (
<search_data> TEXT/VARCHAR/CHAR
,<search_expression> TEXT
[ ,<mode> TEXT DEFAULT 'match'
,<operator> TEXT DEFAULT 'OR'
,<tokenizer> TEXT DEFAULT ''
,<analyzer_params> TEXT DEFAULT ''
,<options> TEXT DEFAULT '']
)
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
search_data |
Sim |
A fonte de busca. Os tipos de dados suportados são |
|
search_expression |
Sim |
O objeto de busca. Os tipos de dados suportados são |
|
mode |
Não |
O modo de busca. Os seguintes modos são suportados:
|
|
operator |
Não |
Especifique o operador lógico a ser usado entre palavras-chave. Este parâmetro tem efeito apenas quando mode está definido como
|
|
tokenizer, analyzer_params |
Não |
Especifique o tokenizador e sua configuração para o search_expression. Na maioria dos casos, não é necessário configurar esses parâmetros.
|
|
options |
Não |
Outros parâmetros para busca de texto completo. O formato para os parâmetros de entrada é
Nota
O parâmetro slop representa o intervalo máximo permitido (ou custo de transformação) entre as palavras em uma frase. Para tokenizadores como |
Valor de retorno
Retorna um valor FLOAT não negativo que representa a pontuação de relevância BM25 entre a fonte de busca e o objeto de busca. Uma pontuação mais alta indica maior relevância. A pontuação é 0 se o texto for completamente irrelevante.
Exemplos
-
Use o modo de correspondência de palavra-chave e altere o operador para
AND.-- It is recommended to specify parameter names. SELECT TEXT_SEARCH (content, 'machine learning', operator => 'AND') FROM tbl; -- If you do not specify parameter names, you must provide them in the correct order. SELECT TEXT_SEARCH (content, 'machine learning', 'match', 'AND') FROM tbl; -
Use o modo de busca por frase e defina
slopcomo 2.SELECT TEXT_SEARCH (content, 'machine learning', 'phrase', options => 'slop=2;') FROM tbl; -
Use o modo de busca em linguagem natural.
-- Use the AND and OR operators to define search logic for the tokens. SELECT TEXT_SEARCH (content, 'machine AND (system OR recognition)', 'natural_language') FROM tbl; -- Use + (required term) and - (excluded term) to define search logic for the tokens. SELECT TEXT_SEARCH (content, '+learning -machine system', 'natural_language') FROM tbl; -
Use o modo de busca por termo.
SELECT TEXT_SEARCH (content, 'machine learning', 'term') FROM tbl; -
Use o modo de busca aproximada com
fuzzinessdefinido como 1.SELECT TEXT_SEARCH (content, 'machine learning', 'fuzzy', options => 'fuzziness=1;') FROM tbl;
Função TOKENIZE
A função TOKENIZE retorna os resultados da tokenização com base na configuração do tokenizador. Use esta função para depurar a tokenização de um índice invertido de texto completo.
Sintaxe da função
TOKENIZE (
<search_data> TEXT
[ ,<tokenizer> TEXT DEFAULT ''
,<analyzer_params> TEXT DEFAULT '']
)
Parâmetros
search_data: Obrigatório. O texto alvo a ser tokenizado. Este parâmetro deve ser uma constante.
tokenizer, analyzer_params: Opcional. Especifique o tokenizador e sua configuração para o texto search_data. O tokenizador padrão é
jiebana V4.1 e anteriores, eikna V4.2 e posteriores.
Valor de retorno
Retorna um array TEXT contendo os tokens do texto alvo.
Verifique uso do índice
Verifique o plano de execução para ver se uma consulta SQL usa o índice invertido de texto completo. A presença de Fulltext Filter no plano indica que o índice foi usado com sucesso. Para mais informações sobre planos de execução, consulte EXPLAIN and EXPLAIN ANALYZE.
SQL de exemplo:
EXPLAIN ANALYZE SELECT * FROM wiki_articles WHERE text_search(content, 'Yangtze River') > 0;
O plano de execução é mostrado a seguir. Ele contém o campo Fulltext Filter, que indica que a instrução SQL utilizou com sucesso o índice invertido de texto completo.
QUERY PLAN
Gather (cost=0.00..1.00 rows=1 width=12)
-> Local Gather (cost=0.00..1.00 rows=1 width=12)
-> Index Scan using Clustering_index on wiki_articles (cost=0.00..1.00 rows=1 width=12)
Fulltext Filter: (text_search(content, search_expression => 'Yangtze River'::text, mode => match, operator => OR, tokenizer => jieba, analyzer_params => {"filter":["removepunct","lowercase",{"stop_words":["_english_"],"type":"stop"},{"language":"english","type":"stemmer"}],"tokenizer":{"hmm":true,"mode":"search","type":"jieba"}}, options => ) > '0'::double precision)
Query Queue: init_warehouse.default_queue
Optimizer: HQO version 4.0.0
Recomendações
Reconstruir índices usando recursos Serverless
Algumas alterações de propriedade acionam compactação e reconstrução de índice, o que pode causar picos de uso de CPU. Trate essas alterações da seguinte forma:
Alterações em bitmap_columns, dictionary_encoding_columns ou índices vetoriais
Use a sintaxe REBUILD com recursos de Computação Serverless em vez de ALTER TABLE ... SET. Para mais informações, consulte REBUILD.
ASYNC REBUILD TABLE <table_name>
WITH (
rebuild_guc_hg_computing_resource = 'serverless'
)
SET (
bitmap_columns = '<col1>,<col2>',
dictionary_encoding_columns = '<col1>:on,<col2>:off',
vectors = '{
"<col_vector>": {
"algorithm": "HGraph",
"distance_method": "Cosine",
"builder_params": {
"base_quantization_type": "rabitq",
"graph_storage_type": "compressed",
"max_degree": 64,
"ef_construction": 400,
"precise_quantization_type": "fp32",
"use_reorder": true,
"max_total_size_to_merge_mb": 4096
}
}
}'
);
Alterações no armazenamento colunar para dados JSON ou colunas de índice de texto completo
A sintaxe REBUILD ainda não é suportada para essas alterações. Use uma tabela temporária em vez disso:
BEGIN;
-- Clean up any existing temporary table
DROP TABLE IF EXISTS <table_new>;
-- Create a temporary table with the same structure
SET hg_experimental_enable_create_table_like_properties = on;
CALL HG_CREATE_TABLE_LIKE ('<table_new>', 'select * from <table>');
COMMIT;
-- Apply the new column properties to the temporary table
ALTER TABLE <table_new> ALTER COLUMN <column_name> SET (enable_columnar_type = ON);
CREATE INDEX <idx_name> ON <table_new> USING FULLTEXT (column_name);
-- Insert data using Serverless resources (index building completes synchronously)
SET hg_computing_resource = 'serverless';
INSERT INTO <table_new> SELECT * FROM <table>;
ANALYZE <table_new>;
BEGIN;
-- Replace the original table with the temporary table
DROP TABLE IF EXISTS <table>;
ALTER TABLE <table_new> RENAME TO <table>;
COMMIT;
Outras alterações de propriedade (por exemplo, distribution_key, clustering_key, segment_key, formato de armazenamento)
Use a sintaxe REBUILD com recursos de Computação Serverless.
Operações avançadas: Personalizar configurações de tokenizador
O Hologres recomenda o uso da configuração padrão do tokenizador. No entanto, se a configuração padrão para um índice invertido de texto completo não atender às suas necessidades, personalize o tokenizador para uma tokenização mais flexível.
Requisitos de analyzer_params
O parâmetro analyzer_params deve atender aos seguintes requisitos:
Deve ser uma string JSON.
-
O objeto JSON de nível superior suporta duas chaves:
tokenizerefilter. Elas são configuradas da seguinte forma:filter: Opcional. Um array JSON usado para configurar filtros. Múltiplos filtros são aplicados na ordem especificada.-
tokenizer: Obrigatório. Um objeto JSON que configura as propriedades do tokenizador. Este objeto JSON suporta as seguintes chaves:type: Obrigatório. O nome do tokenizador.-
Os parâmetros para o objeto
tokenizervariam conforme o tokenizador. Para detalhes, consulte a tabela a seguir:Tokenizador
Parâmetro
Descrição
Valor
jieba
mode
O modo de tokenização.
-
search(padrão): Lista múltiplas combinações possíveis de tokens, permitindo redundância. -
exact: Não realiza divisão redundante.
hmm
Determina se deve usar um Modelo Oculto de Markov para identificar palavras que não estão no dicionário. Este recurso melhora a identificação de novas palavras.
-
true(padrão): Usa o modelo. -
false: Não usa o modelo.
standard
max_token_length
O comprimento máximo do token.
Um inteiro positivo. O valor padrão é 255. Se um token exceder esse comprimento, ele será dividido em intervalos de
max_token_length.ik
mode
O modo de tokenização.
-
ik_max_word (padrão): Tokenização de granularidade fina que gera todas as palavras curtas possíveis.
-
ik_smart: Um modo de tokenização de granularidade grossa que prioriza palavras mais longas para reduzir o número de tokens. Os tokens de saída não se sobrepõem. Este modo tenta combinar numerais e palavras de medida em um único token.
enable_lowercase
Determina se deve converter tokens para minúsculas.
-
true(padrão) -
false
ngram
min_ngram
O comprimento mínimo de caracteres de um token.
Um número positivo. O padrão é 1. A diferença máxima permitida em relação a
max_ngramé 3.Nota: Você pode ajustar a diferença máxima definindo o seguinte GUC, por exemplo,
SET hg_fulltext_index_max_ngram_diff = 5;max_ngram
O comprimento máximo de caracteres de um token.
Um número positivo. O padrão é 2. O valor deve estar no intervalo [1, 255]. A diferença máxima permitida em relação a
min_ngramé 3.NotaUma grande diferença entre
max_ngramemin_ngramfaz com que o tokenizador ngram gere muitos tokens, aumentando o consumo de recursos, armazenamento e tempo de construção do índice.prefix_only
Determina se deve gerar apenas n-grams de prefixo.
-
true -
false(padrão)
pinyin
keep_first_letter
Determina se deve manter a primeira letra de cada caractere chinês.
-
true(padrão): Mantém as iniciais do pinyin. -
false: Não mantém a primeira letra.
keep_separate_first_letter
Determina se deve manter a primeira letra de cada caractere chinês como um token separado.
-
true: Mantém a inicial de cada caractere.
-
false(padrão): Não mantém como tokens separados.
limit_first_letter_length
O comprimento máximo do token que contém as primeiras letras combinadas.
Um inteiro. O valor padrão é 16.
keep_full_pinyin
Determina se deve manter o Pinyin completo de cada caractere chinês.
-
true (padrão): O pinyin é mantido.
-
false: Não mantém o Pinyin completo.
keep_joined_full_pinyin
Determina se deve unir o Pinyin completo de cada caractere chinês em um único token.
-
true: Habilita a concatenação.
-
false(padrão): Não une o Pinyin.
keep_none_chinese
Determina se deve manter letras ou números não chineses no resultado.
-
true(padrão): Mantém-os. -
false: Não os mantém.
keep_none_chinese_together
Determina se deve manter letras ou números não chineses consecutivos juntos como um único token.
-
true(padrão): Mantém sequências de letras e dígitos juntas. -
false: Não preserva a forma original.
NotaEste parâmetro tem efeito apenas quando
keep_none_chineseestá definido comotrue.keep_none_chinese_in_first_letter
Determina se deve manter letras ou números não chineses no token de primeira letra.
-
true (padrão): Mantém o token.
-
false: Não os mantém.
keep_none_chinese_in_joined_full_pinyin
Determina se deve manter letras ou números não chineses no token de Pinyin completo unido.
-
true: Mantém o token.
-
false(padrão): Não os mantém.
none_chinese_pinyin_tokenize
Determina se deve dividir letras não chinesas em termos Pinyin separados, caso formem um Pinyin válido.
-
true(padrão): Divide-os. -
false: Não os divide.
NotaEste parâmetro tem efeito apenas quando
keep_none_chineseekeep_none_chinese_togetherestão definidos comotrue.keep_original
Determina se deve manter a entrada original.
-
true: Mantém a entrada original. -
false(padrão): Não mantém a entrada original.
lowercase
Determina se deve converter letras não chinesas para minúsculas.
-
true(padrão) -
false
trim_whitespace
Determina se deve remover caracteres de espaço em branco.
-
true(padrão) -
false
remove_duplicated_term
Determina se deve remover termos duplicados.
-
true: Remove stop words. -
false(padrão): Não remove duplicatas.
keep_separate_chinese
Determina se deve manter caracteres chineses individuais como tokens separados.
-
true: Mantém os caracteres.
-
false(padrão): Não os mantém.
-
analyzer_params padrão
A tabela a seguir mostra a configuração padrão de analyzer_params para diferentes tokenizadores.
|
Tokenizador |
Padrão |
|
jieba (tokenizador padrão na V4.1 e anteriores) |
|
|
whitespace |
|
|
keyword |
|
|
simple |
|
|
standard |
|
|
icu |
|
|
ik (tokenizador padrão na V4.2 e posteriores) |
|
|
ngram |
|
|
pinyin |
|
Configure filter
O Hologres suporta os seguintes filtros em analyzer_params.
Múltiplos filtros são aplicados na ordem especificada.
|
Filtro |
Descrição |
Formato do parâmetro |
Exemplo de uso |
|
lowercase |
Converte letras maiúsculas em um token para minúsculas. |
Use o nome do filtro como uma string.
|
|
|
stop |
Remove tokens de stop words. |
|
|
|
stemmer |
Reduz tokens à sua forma raiz (radical) com base nas regras gramaticais de um idioma especificado. |
|
|
|
length |
Remove tokens que excedem um comprimento especificado. |
|
|
|
removepunct |
Remove tokens que consistem apenas em caracteres de pontuação. |
Use o nome do filtro como uma string.
Nota
A partir da V4.0.8,
|
|
|
pinyin |
Fornece filtragem de tokens específica para Pinyin. |
|
Usa as mesmas propriedades do tokenizador Pinyin. |