Las versiones 4.0 y posteriores de Hologres admiten un índice invertido de texto completo. Esta función se basa en Tantivy, un motor de búsqueda de texto completo de alto rendimiento. También es compatible con el algoritmo de puntuación de similitud BM25, lo que permite clasificar documentos y buscar palabras clave o frases.
Funcionamiento
Cuando usted escribe texto de origen en Hologres, el sistema compila un archivo de índice invertido de texto completo para cada archivo de datos según la configuración del índice. El proceso comienza cuando un tokenizer divide el texto en tokens. Después, el índice registra la asignación de cada token a su texto de origen, junto con su posición y frecuencia de término.
Al ejecutar una búsqueda de texto completo, Hologres primero divide el texto de consulta en un conjunto de tokens de consulta mediante un tokenizer. Luego, utiliza el algoritmo BM25 para calcular una puntuación de relevancia entre cada texto de origen y dicho conjunto de tokens. Este proceso permite búsquedas de texto completo con alta precisión y rendimiento.
Consideraciones
En Hologres V4.0 y versiones posteriores, los índices invertidos de texto completo solo son compatibles con tablas de almacenamiento por columnas y de almacenamiento híbrido de filas y columnas. No se admiten en tablas de almacenamiento por filas.
Solo puede crear un índice invertido de texto completo en columnas de tipo TEXT, CHAR o VARCHAR.
Únicamente se compila un índice invertido de texto completo por columna. Para indexar varias columnas, cree un índice independiente para cada una.
Después de crear un índice invertido de texto completo, los archivos de índice correspondientes a los datos existentes y a los nuevos datos cargados de forma masiva se compilan de manera asíncrona durante la compactación de datos. Hasta que se compile el índice, la puntuación de relevancia BM25 de esos datos será 0.
El comportamiento de indexación para escrituras de datos en tiempo real varía según la versión. Antes de la V4.0.8, los índices se compilaban de forma síncrona. A partir de la V4.0.8, para mejorar la eficiencia de escritura, el sistema actualiza el índice en memoria de forma asíncrona cada segundo. Solo podrá consultar datos mediante el índice una vez que finalice dicha actualización.
Las búsquedas de texto completo solo se ejecutan en columnas que cuentan con un índice invertido de texto completo. No se admite la búsqueda en columnas sin índice.
-
Se recomienda usar recursos serverless para las importaciones masivas de datos. Estos recursos ejecutan la compactación y compilan el índice invertido de texto completo de forma síncrona durante la importación. Para más información, consulte Use Serverless Computing to perform read and write tasks y Use Serverless Computing to perform Compaction tasks. Si no utiliza recursos serverless, se recomienda desencadenar manualmente compaction después de una importación masiva o de modificar un índice mediante el siguiente comando.
VACUUM <schema_name>.<table_name>; De forma predeterminada, el algoritmo de búsqueda BM25 calcula las puntuaciones de relevancia a partir de estadísticas a nivel de archivo. En Hologres V5.0 y versiones posteriores, utilice el parámetro
hg_text_search_bm25_statistics_levelpara cambiar a la puntuación a nivel de shard, lo que hace que las puntuaciones sean comparables dentro del mismo shard. Si mantiene la puntuación predeterminada a nivel de archivo e importa datos en lotes pequeños, se recomienda desencadenar manualmente la compactación según sea necesario para fusionar los archivos de datos y mejorar la precisión de la búsqueda.Utilice recursos serverless para ejecutar consultas de búsqueda de texto completo.
-
Elija el tokenizer adecuado para su escenario con base en la siguiente tabla:
Escenario
Tokenizer
Descripción
Extracción de palabras clave de artículos extensos
Jieba
Admite el descubrimiento de palabras nuevas y el cambio de modos complejos.
Búsqueda en textos descriptivos en chino
IK
Identifica términos en chino con precisión.
Búsqueda en textos similares a títulos en inglés
Simple, Whitespace, Standard
Sencillos y eficientes. Elija uno según las características específicas de su texto.
Búsqueda difusa en textos similares a registros
Ngram
No requiere diccionario y es adecuado para consultas de texto difusas.
Búsqueda basada en pinyin para nombres de productos o personas en chino
Pinyin
Admite diversos escenarios de búsqueda en pinyin chino, como pinyin completo, abreviaturas de primeras letras y caracteres con múltiples pronunciaciones.
Gestión de índices
Creación de un índice
Sintaxis
CREATE INDEX [ IF NOT EXISTS ] idx_name ON table_name
USING FULLTEXT (column_name [ , ... ])
[ WITH ( storage_parameter [ = value ] [ , ... ] ) ];
Parámetros
|
Parámetro |
Descripción |
|
idx_name |
El nombre del índice. |
|
table_name |
El nombre de la tabla de destino. |
|
column_name |
La columna para el índice invertido de texto completo. |
|
storage_parameter |
Especifica los parámetros del índice invertido de texto completo. Se admiten los siguientes parámetros:
Nota
Cada índice solo admite un A partir de la V4.2, los índices nuevos que no especifiquen explícitamente un tokenizer utilizarán |
Configuración de index_options
El parámetro index_options admite tres niveles. Las opciones de nivel superior incluyen automáticamente toda la información de los niveles inferiores: freqs incluye toda la información de docs, y positions incluye toda la información de freqs y docs.
|
Valor |
Contenido del índice |
Impacto y limitaciones |
Casos de uso |
|
positions (predeterminado) |
ID de documento + frecuencia de término + posición |
Compatibilidad total con las funciones: admite consultas de frases y puntuación de relevancia estándar. |
Escenarios generales de búsqueda de texto completo. |
|
freqs |
ID de documento + frecuencia de término |
No se admiten consultas de frases; devuelven un error. |
Escenarios que requieren puntuación y clasificación basadas en la frecuencia de término, pero no necesitan coincidencia exacta de frases. |
|
docs |
Solo el ID de documento |
|
Ideal para escenarios sensibles al almacenamiento que solo requieren comprobaciones de existencia (filtrado) y no necesitan puntuación de relevancia. |
Para los índices que utilizan el tokenizer keyword, el nivel de registro se fija en docs y la configuración de index_options no aplica.
Ejemplos
-
Cree un índice invertido de texto completo con el tokenizer y la configuración predeterminados (
jiebaen V4.1 y versiones anteriores;iken V4.2 y versiones posteriores).CREATE INDEX idx1 ON tbl USING FULLTEXT (col1); -
Especifique explícitamente el tokenizer
iky utilice su configuración predeterminada.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'ik'); -
Especifique explícitamente una configuración personalizada de tokenizer: el tokenizer
jiebaen modoexactcon únicamente el filtrolowercase.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'jieba', analyzer_params = '{"tokenizer":{"type":"jieba","mode":"exact"}, "filter":["lowercase"]}'); -
Establezca
index_optionsenfreqsal crear el índice. Esto ahorra espacio, pero no admite consultas de frases. Compatible desde Hologres V4.1.9.CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (index_options = 'freqs');
Después de crear un índice invertido de texto completo, la compactación compila los archivos de índice tras la importación de datos.
Se recomienda usar recursos de cómputo serverless para las importaciones por lotes. Estos recursos completan la compactación y compilan el índice invertido de texto completo de forma síncrona durante la importación. Para más información, consulte Use serverless computing to perform read and write tasks y Use serverless computing to perform compaction tasks.
-
Si no utiliza recursos serverless, se recomienda desencadenar manualmente la compactación después de una importación por lotes o de modificar un índice mediante la ejecución del siguiente comando. Para más información, consulte Compaction (Beta).
VACUUM <schema_name>.<table_name>;
Modificación de un índice
Sintaxis
-- 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 consultar la descripción detallada de los parámetros, consulte Parameters.
Ejemplos
Después de modificar un índice invertido de texto completo, la compactación compila los archivos de índice de forma asíncrona. Se recomienda desencadenar manualmente la compactación tras modificar un índice mediante la ejecución del comando VACUUM <schema_name>.<table_name>;. Para más información, consulte Compaction.
-
Cambie el tokenizer del índice a
standard.ALTER INDEX idx1 SET (tokenizer = 'standard'); -
Cambie el tokenizer del índice a
iken modoik_max_word, sin convertir a minúsculas y sin aplicar ningún filtro.ALTER INDEX idx1 SET ( tokenizer = 'ik', analyzer_params = '{"tokenizer":{"type":"ik","mode":"ik_max_word","enable_lowercase": false}}' ); -
Restablezca el tokenizer predeterminado
jiebay utilice su configuración predeterminada deanalyzer_params.ALTER INDEX idx1 RESET (tokenizer); ALTER INDEX idx1 RESET (tokenizer, analyzer_params); -
Restablezca la configuración predeterminada de
analyzer_paramspara el tokenizer actual.ALTER INDEX idx1 RESET (analyzer_params); -
Cambie
index_optionsdel índice adocs.ALTER INDEX idx1 SET (index_options = 'docs'); -
Restablezca
index_optionsa su valor predeterminado,positions.ALTER INDEX idx1 RESET (index_options);
Eliminación de un índice
Sintaxis
DROP INDEX [ IF EXISTS ] <idx_name> [ RESTRICT ];
Parámetros
Para consultar la descripción detallada de los parámetros, consulte Parameters.
Consulta de índices
Hologres proporciona la tabla del sistema hologres.hg_index_properties, donde puede consultar los índices invertidos de texto completo creados para una tabla y sus posiciones correspondientes.
SELECT * FROM hologres.hg_index_properties;
Ejecute la siguiente instrucción SQL para consultar la tabla y la columna asociadas a un í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: el valor del campo
table_namespaceen el resultado del comandoSELECT * FROM hologres.hg_index_properties;.indexname: el nombre real del índice.
Consulta del progreso de compilación del índice
Después de crear un índice invertido de texto completo, utilice la función integrada hg_show_build_index_progress para consultar el progreso de compilación del índice en tiempo real. Esta función devuelve el estado de compilación de todos los índices de texto completo de la tabla especificada.
Ejemplo
SELECT * FROM hg_show_build_index_progress('<table_name>');
Notas de uso
Para invocar esta función, debe contar con el permiso SELECT sobre la tabla especificada.
La función devuelve información de compilación de todos los índices de texto completo de la tabla, incluido el número de archivos compilados, el número total de archivos, el progreso de compilación en porcentaje y el tiempo restante estimado.
Valores de retorno
El resultado incluye los siguientes campos:
|
Campo |
Tipo de dato |
Descripción |
|
schema_name |
TEXT |
El nombre del esquema que contiene el índice. |
|
table_name |
TEXT |
El nombre de la tabla. |
|
index_name |
TEXT |
El nombre del índice. |
|
index_id |
BIGINT |
El ID único del índice. |
|
am_name |
TEXT |
El tipo de índice. |
|
built_index_size |
TEXT |
El tamaño del índice ya compilado. |
|
built_num_files |
INTEGER |
El número de archivos cuya compilación de índice finalizó. |
|
target_num_files |
INTEGER |
El número total de archivos para los cuales se debe compilar el índice. |
|
progress |
TEXT |
El progreso de compilación, expresado como porcentaje. |
|
estimated_remaining_time |
TEXT |
El tiempo de compilación restante estimado. |
Búsqueda de texto completo mediante un índice
Hologres admite diversos modos de búsqueda que le permiten adaptar las búsquedas de texto completo a su lógica de negocio.
|
Modo de búsqueda |
Descripción |
|
Coincidencia de palabras clave |
Busca palabras clave en un objeto de búsqueda tokenizado. Permite definir la relación entre las palabras clave mediante lógica AND/OR. |
|
Búsqueda de frases |
Busca una frase completa. Para que haya coincidencia, las palabras de la frase deben aparecer a una distancia específica entre sí. |
|
Búsqueda en lenguaje natural |
Permite definir condiciones de consulta complejas mediante sintaxis de lenguaje natural. Esto incluye especificar lógica AND/OR, términos obligatorios, términos excluidos y frases. |
|
Búsqueda de términos |
Realiza una coincidencia exacta del objeto de búsqueda. El índice debe contener la cadena de consulta exacta para devolver una coincidencia. |
Función TEXT_SEARCH
La función TEXT_SEARCH calcula la puntuación de relevancia BM25 de un origen de búsqueda con base en un objeto de búsqueda.
Sintaxis de la función
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 |
Obligatorio |
Descripción |
|
search_data |
Sí |
El origen de búsqueda. Los tipos de datos compatibles son |
|
search_expression |
Sí |
El objeto de búsqueda. Los tipos de datos compatibles son |
|
mode |
No |
El modo de búsqueda. Se admiten los siguientes modos:
|
|
operator |
No |
Especifica el operador lógico que se usa entre las palabras clave. Este parámetro solo surte efecto cuando mode se establece en
|
|
tokenizer, analyzer_params |
No |
Especifica el tokenizer y su configuración para search_expression. En la mayoría de los casos, no es necesario configurar estos parámetros.
|
|
options |
No |
Otros parámetros para la búsqueda de texto completo. El formato de los parámetros de entrada es
Nota
El parámetro slop representa el intervalo máximo permitido (o costo de transformación) entre las palabras de una frase. Para tokenizers como |
Valor de retorno
Devuelve un valor FLOAT no negativo que representa la puntuación de relevancia BM25 entre el origen de búsqueda y el objeto de búsqueda. Una puntuación más alta indica mayor relevancia. La puntuación es 0 si el texto es completamente irrelevante.
Ejemplos
-
Utilice el modo de coincidencia de palabras clave y cambie el operador a
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; -
Utilice el modo de búsqueda de frases y establezca
slopen 2.SELECT TEXT_SEARCH (content, 'machine learning', 'phrase', options => 'slop=2;') FROM tbl; -
Utilice el modo de búsqueda en lenguaje 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; -
Utilice el modo de búsqueda de términos.
SELECT TEXT_SEARCH (content, 'machine learning', 'term') FROM tbl; -
Utilice el modo de búsqueda difusa con
fuzzinessestablecido en 1.SELECT TEXT_SEARCH (content, 'machine learning', 'fuzzy', options => 'fuzziness=1;') FROM tbl;
Función TOKENIZE
La función TOKENIZE devuelve los resultados de la tokenización con base en la configuración del tokenizer. Utilice esta función para depurar la tokenización de un índice invertido de texto completo.
Sintaxis de la función
TOKENIZE (
<search_data> TEXT
[ ,<tokenizer> TEXT DEFAULT ''
,<analyzer_params> TEXT DEFAULT '']
)
Parámetros
search_data: obligatorio. El texto de destino que se va a tokenizar. Este parámetro debe ser una constante.
tokenizer, analyzer_params: opcional. Especifica el tokenizer y su configuración para el texto search_data. El tokenizer predeterminado es
jiebaen V4.1 y versiones anteriores, yiken V4.2 y versiones posteriores.
Valor de retorno
Devuelve una matriz TEXT que contiene los tokens del texto de destino.
Comprobación del uso del índice
Revise el plan de ejecución para comprobar si una consulta SQL utiliza el índice invertido de texto completo. La presencia de Fulltext Filter en el plan indica que el índice se utilizó correctamente. Para más información sobre los planes de ejecución, consulte EXPLAIN and EXPLAIN ANALYZE.
SQL de ejemplo:
EXPLAIN ANALYZE SELECT * FROM wiki_articles WHERE text_search(content, 'Yangtze River') > 0;
A continuación se muestra el plan de ejecución. Contiene el campo Fulltext Filter, lo que indica que la instrucción SQL utilizó correctamente el í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
Recomendaciones
Reconstruir índices con recursos serverless
Algunos cambios de propiedades activan la compactación y la reconstrucción de índices, lo que puede provocar picos en el uso de CPU. Gestione estos cambios de la siguiente manera:
Cambios en bitmap_columns, dictionary_encoding_columns o índices vectoriales
Utilice la sintaxis REBUILD con recursos de Serverless Computing en lugar de ALTER TABLE ... SET. Para obtener más información, 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
}
}
}'
);
Cambios en el almacenamiento columnar para datos JSON o columnas de índice de texto completo
La sintaxis REBUILD aún no es compatible con estos cambios. Utilice una tabla temporal:
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;
Otros cambios de propiedades (por ejemplo, distribution_key, clustering_key, segment_key, formato de almacenamiento)
Utilice la sintaxis REBUILD con recursos de Serverless Computing.
Operaciones avanzadas: personalizar las configuraciones del tokenizer
Hologres recomienda usar la configuración predeterminada del tokenizer. Sin embargo, si esta configuración no cubre sus necesidades para un índice invertido de texto completo, puede personalizar el tokenizer y obtener una segmentación más flexible.
Requisitos de analyzer_params
El parámetro analyzer_params debe cumplir con los siguientes requisitos:
Debe ser una cadena JSON.
-
El objeto JSON de nivel superior admite dos claves:
tokenizeryfilter. Se configuran de la siguiente manera:filter: opcional. Es un arreglo JSON que se utiliza para configurar filtros. Los filtros se aplican en el orden especificado cuando hay varios.-
tokenizer: obligatorio. Es un objeto JSON que configura las propiedades del tokenizer. Este objeto JSON admite las siguientes claves:type: obligatorio. El nombre del tokenizer.-
Los parámetros del objeto
tokenizervarían según el tokenizer elegido. Para más detalles, consulte la siguiente tabla:Tokenizer
Parámetro
Descripción
Valor
jieba
mode
El modo de tokenización.
-
search(predeterminado): enumera varias combinaciones posibles de tokens, lo cual permite redundancia. -
exact: no genera divisiones redundantes.
hmm
Determina si se usa un modelo oculto de Márkov para identificar palabras que no están en el diccionario. Esta función mejora la identificación de palabras nuevas.
-
true(predeterminado): usa el modelo. -
false: no usa el modelo.
standard
max_token_length
La longitud máxima del token.
Un número entero positivo. El valor predeterminado es 255. Si un token supera esta longitud, se divide en intervalos de
max_token_length.ik
mode
El modo de tokenización.
-
ik_max_word (predeterminado): tokenización detallada que genera todas las palabras cortas posibles.
-
ik_smart: modo de tokenización general que prioriza las palabras más largas para reducir la cantidad de tokens. Los tokens generados no se superponen. Este modo intenta combinar números y clasificadores en un solo token.
enable_lowercase
Determina si los tokens se convierten a minúsculas.
-
true(predeterminado) -
false
ngram
min_ngram
La longitud mínima en caracteres de un token.
Un número positivo. El valor predeterminado es 1. La diferencia máxima permitida respecto a
max_ngrames 3.Nota: puede ajustar la diferencia máxima si establece el siguiente GUC; por ejemplo,
SET hg_fulltext_index_max_ngram_diff = 5;max_ngram
La longitud máxima en caracteres de un token.
Un número positivo. El valor predeterminado es 2. El valor debe estar en el rango [1, 255]. La diferencia máxima permitida respecto a
min_ngrames 3.NotaUna diferencia grande entre
max_ngramymin_ngramprovoca que el tokenizer ngram genere muchos tokens. Esto aumenta el consumo de recursos, el almacenamiento y el tiempo de compilación del índice.prefix_only
Determina si se generan únicamente n-gramas de prefijo.
-
true -
false(predeterminado)
pinyin
keep_first_letter
Determina si se conserva la primera letra de cada carácter chino.
-
true(predeterminado): conserva las iniciales del pinyin. -
false: no conserva la primera letra.
keep_separate_first_letter
Determina si la primera letra de cada carácter chino se conserva como un token independiente.
-
true: conserva la inicial de cada carácter.
-
false(predeterminado): no las conserva como tokens independientes.
limit_first_letter_length
La longitud máxima del token que contiene las primeras letras combinadas.
Un número entero. El valor predeterminado es 16.
keep_full_pinyin
Determina si se conserva el pinyin completo de cada carácter chino.
-
true (predeterminado): conserva el pinyin.
-
false: no conserva el pinyin completo.
keep_joined_full_pinyin
Determina si el pinyin completo de cada carácter chino se une en un solo token.
-
true: habilita la concatenación.
-
false(predeterminado): no une el pinyin.
keep_none_chinese
Determina si se conservan las letras o los números no chinos en el resultado.
-
true(predeterminado): los conserva. -
false: no los conserva.
keep_none_chinese_together
Determina si las letras o los números no chinos consecutivos se mantienen juntos como un solo token.
-
true(predeterminado): mantiene juntas las secuencias de letras y dígitos. -
false: no conserva la forma original.
NotaEste parámetro solo surte efecto cuando
keep_none_chinesese establece entrue.keep_none_chinese_in_first_letter
Determina si se conservan las letras o los números no chinos en el token de primeras letras.
-
true (predeterminado): conserva el token.
-
false: no los conserva.
keep_none_chinese_in_joined_full_pinyin
Determina si se conservan las letras o los números no chinos en el token de pinyin completo unido.
-
true: conserva el token.
-
false(predeterminado): no los conserva.
none_chinese_pinyin_tokenize
Determina si las letras no chinas se dividen en términos de pinyin independientes cuando forman un pinyin válido.
-
true(predeterminado): las divide. -
false: no las divide.
NotaEste parámetro solo surte efecto cuando
keep_none_chineseykeep_none_chinese_togetherse establecen entrue.keep_original
Determina si se conserva la entrada original.
-
true: conserva la entrada original. -
false(predeterminado): no conserva la entrada original.
lowercase
Determina si las letras no chinas se convierten a minúsculas.
-
true(predeterminado) -
false
trim_whitespace
Determina si se quitan los espacios en blanco.
-
true(predeterminado) -
false
remove_duplicated_term
Determina si se eliminan los términos duplicados.
-
true: elimina las palabras vacías. -
false(predeterminado): no elimina los duplicados.
keep_separate_chinese
Determina si los caracteres chinos individuales se conservan como tokens independientes.
-
true: conserva los caracteres.
-
false(predeterminado): no los conserva.
-
Valores predeterminados de analyzer_params
A continuación se muestra la configuración predeterminada de analyzer_params para distintos tokenizers.
|
Tokenizer |
Valor predeterminado de |
|
jieba (tokenizer predeterminado en V4.1 y versiones anteriores) |
|
|
whitespace |
|
|
keyword |
|
|
simple |
|
|
standard |
|
|
icu |
|
|
ik (tokenizer predeterminado en V4.2 y versiones posteriores) |
|
|
ngram |
|
|
pinyin |
|
filter configuración**
Hologres es compatible con los siguientes filtros en analyzer_params.
Los filtros se aplican en el orden especificado cuando hay varios.
|
Filtro |
Descripción |
Formato del parámetro |
Ejemplo de uso |
|
lowercase |
Convierte a minúsculas las letras mayúsculas de un token. |
Use el nombre del filtro como cadena.
|
|
|
stop |
Elimina los tokens de palabras vacías. |
|
|
|
stemmer |
Reduce los tokens a su forma raíz (lexema) según las reglas gramaticales del idioma especificado. |
|
|
|
length |
Elimina los tokens que superan una longitud específica. |
|
|
|
removepunct |
Elimina los tokens formados únicamente por signos de puntuación. |
Use el nombre del filtro como cadena.
Nota
A partir de V4.0.8,
|
|
|
pinyin |
Proporciona filtrado de tokens específico para pinyin. |
|
Usa las mismas propiedades que el tokenizer pinyin. |