Hologres V4.0 以降では、フルテキスト転置インデックスがサポートされています。この機能は、パフォーマンス専有型の全文検索エンジンである Tantivy 上に構築されています。また、BM25 類似度スコアリングアルゴリズムもサポートしており、ドキュメントランキング、キーワード検索、フレーズ検索が可能です。
仕組み
ソーステキストを Hologres に書き込むと、インデックス構成に基づいて、データファイルごとにフルテキスト転置インデックスファイルが構築されます。このプロセスは、トークナイザーがテキストをトークンに分割することから始まります。次に、インデックスは各トークンからそのソーステキストへのマッピングを、その位置と Term Frequency (TF) とともに記録します。
全文検索を実行すると、Hologres はまずクエリテキストを形態素解析して一連のクエリトークンに分割します。その後、Hologres は BM25 アルゴリズムを使用して、クエリトークンのセットに対して各ソーステキストの関連度スコアを計算します。このプロセスにより、パフォーマンス専有型かつ高精度の全文検索が可能になります。
注意事項
-
Hologres V4.0 以降では、フルテキスト転置インデックスは、列ストアテーブルと行列混在ストアテーブルでのみサポートされており、行ストアテーブルではサポートされていません。
-
フルテキスト転置インデックスは、TEXT、CHAR、または VARCHAR 型の列にのみ作成できます。
-
列ごとに作成できるフルテキスト転置インデックスは 1 つだけです。複数の列にインデックスを作成するには、列ごとに個別のインデックスを作成します。
-
フルテキスト転置インデックスを作成した後、既存のデータおよび新しく一括ロードされたデータのインデックスファイルは、データコンパクション中に非同期で構築されます。インデックスが構築されるまで、データの BM25 関連度スコアは 0 になります。
-
リアルタイムのデータ書き込みに対するインデックス作成の動作は、バージョンによって異なります。V4.0.8 より前では、インデックスは同期的に構築されます。V4.0.8 以降では、書き込み効率を向上させるために、システムはインメモリインデックスを 1 秒ごとに非同期でリフレッシュします。リフレッシュが完了した後にのみ、インデックスを使用してデータをクエリできます。
-
全文検索は、フルテキスト転置インデックスを持つ列に対してのみ実行できます。インデックスのない列の検索はサポートされていません。
-
一括データインポートには、サーバーレスリソースを使用することを推奨します。これらのリソースは、インポートプロセス中にコンパクションを実行し、フルテキスト転置インデックスを同期的に構築します。詳細については、「サーバーレスコンピューティングを使用した読み取り/書き込みタスクの実行」および「サーバーレスコンピューティングを使用したコンパクションタスクの実行」をご参照ください。サーバーレスリソースを使用しない場合は、一括インポートまたはインデックス変更後に、次のコマンドで手動でコンパクションをトリガーすることを推奨します。
VACUUM <schema_name>.<table_name>; -
デフォルトでは、BM25 検索アルゴリズムはファイルレベルの統計情報から関連度スコアを計算します。Hologres V5.0 以降では、
hg_text_search_bm25_statistics_levelパラメーターを使用してシャードレベルのスコアリングに切り替えることができます。これにより、同じシャード内でスコアを比較可能になります。デフォルトのファイルレベルのスコアリングを維持し、データを小規模なバッチでインポートする場合は、必要に応じて手動でコンパクションをトリガーしてデータファイルをマージし、検索精度を向上させることを推奨します。 -
サーバーレスリソースを使用して、全文検索クエリを実行できます。
-
次の表を使用して、シナリオに適したトークナイザーを選択してください:
シナリオ
トークナイザー
説明
長文記事からのキーワード抽出
Jieba
新語発見と複雑なモード切り替えをサポートします。
中国語の記述テキストの検索
IK
中国語の用語を正確に識別します。
英語のタイトルのようなテキストの検索
Simple、Whitespace、Standard
シンプルで効率的です。特定のテキストに基づいていずれかを選択します。
ログのようなテキストのあいまい検索
Ngram
辞書不要で、あいまいなテキストクエリに適しています。
中国語の製品名や人名の Pinyin ベースの検索
Pinyin
完全な Pinyin、頭文字の略語、複数の発音を持つ文字など、さまざまな中国語 Pinyin 検索シナリオをサポートします。
インデックスの管理
インデックスの作成
構文
CREATE INDEX [ IF NOT EXISTS ] idx_name ON table_name
USING FULLTEXT (column_name [ , ... ])
[ WITH ( storage_parameter [ = value ] [ , ... ] ) ];
パラメーター
|
パラメーター |
説明 |
|
idx_name |
インデックス名。 |
|
table_name |
ターゲットテーブルの名前。 |
|
column_name |
フルテキスト転置インデックスの対象となる列。 |
|
storage_parameter |
フルテキスト転置インデックスのパラメーターを指定します。次のパラメーターがサポートされています:
説明
各インデックスは、1 つの V4.2 以降、トークナイザーを明示的に指定せずに新しく作成されたインデックスは、デフォルトで |
index_options の構成
index_options パラメーターは 3 つのレベルをサポートします。上位レベルのオプションは、下位レベルのすべての情報を自動的に含みます:freqs は docs のすべての情報を含み、positions は freqs と docs のすべての情報を含みます。
|
値 |
インデックスの内容 |
影響と制限 |
ユースケース |
|
positions (デフォルト) |
ドキュメント ID + Term Frequency (TF) + 位置 |
全機能サポート:フレーズクエリと標準の関連度スコアリングをサポートします。 |
一般的な全文検索シナリオ。 |
|
freqs |
ドキュメント ID + Term Frequency (TF) |
フレーズクエリはサポートされておらず、エラーを返します。 |
Term Frequency (TF) に基づくスコアリングとランキングが必要で、完全なフレーズ一致が不要なシナリオ。 |
|
docs |
ドキュメント ID のみ |
|
存在チェック (フィルタリング) のみが必要で、関連度スコアリングが不要な、ストレージに敏感なシナリオに最適です。 |
keyword トークナイザーを使用するインデックスの場合、レコードレベルは docs に固定され、index_options 設定は適用されません。
例
-
デフォルトのトークナイザーと構成 (
jieba(V4.1 以前)、ik(V4.2 以降)) でフルテキスト転置インデックスを作成します。CREATE INDEX idx1 ON tbl USING FULLTEXT (col1); -
ikトークナイザーを明示的に指定し、そのデフォルト構成を使用します。CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'ik'); -
カスタムトークナイザー構成を明示的に指定します:
exactモードのjiebaトークナイザーで、lowercaseフィルターのみを使用します。CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (tokenizer = 'jieba', analyzer_params = '{"tokenizer":{"type":"jieba","mode":"exact"}, "filter":["lowercase"]}'); -
インデックス作成時に
index_optionsをfreqsに設定します。これによりスペースを節約できますが、フレーズクエリはサポートされません。Hologres V4.1.9 以降でサポートされています。CREATE INDEX idx1 ON tbl USING FULLTEXT (col1) WITH (index_options = 'freqs');
-
フルテキスト転置インデックスを作成した後、データインポート後にコンパクションによってインデックスファイルが構築されます。
-
バッチインポートを実行するには、サーバーレスコンピューティングリソースを使用することを推奨します。これらのリソースは、データインポート中にコンパクションを完了し、フルテキスト転置インデックスを同期的に構築します。詳細については、「サーバーレスコンピューティングを使用した読み取り/書き込みタスクの実行」および「サーバーレスコンピューティングを使用したコンパクションタスクの実行」をご参照ください。
-
サーバーレスリソースを使用しない場合は、バッチインポートまたはインデックス変更後に、次のコマンドを実行して手動でコンパクションをトリガーすることを推奨します。詳細については、「コンパクション (ベータ)」をご参照ください。
VACUUM <schema_name>.<table_name>;
インデックスの変更
構文
-- インデックス構成の変更
ALTER INDEX [ IF EXISTS ] <idx_name> SET ( <storage_parameter> = '<storage_value>' [ , ... ] );
-- デフォルト構成へのリセット
ALTER INDEX [ IF EXISTS ] <idx_name> RESET ( <storage_parameter> [ , ... ] );
パラメーター
パラメーターの詳細な説明については、「パラメーター」をご参照ください。
例
フルテキスト転置インデックスを変更した後、コンパクションによってインデックスファイルが非同期で構築されます。インデックス変更後に VACUUM <schema_name>.<table_name>; コマンドを実行して、手動でコンパクションをトリガーすることを推奨します。詳細については、「コンパクション」をご参照ください。
-
インデックスのトークナイザーを
standardに変更します。ALTER INDEX idx1 SET (tokenizer = 'standard'); -
インデックスのトークナイザーを
ik_max_wordモードのikに変更し、小文字への変換を行わず、フィルターも使用しません。ALTER INDEX idx1 SET ( tokenizer = 'ik', analyzer_params = '{"tokenizer":{"type":"ik","mode":"ik_max_word","enable_lowercase": false}}' ); -
デフォルトの
jiebaトークナイザーにリセットし、そのデフォルトのanalyzer_params構成を使用します。ALTER INDEX idx1 RESET (tokenizer); ALTER INDEX idx1 RESET (tokenizer, analyzer_params); -
現在のトークナイザーのデフォルトの
analyzer_params構成にリセットします。ALTER INDEX idx1 RESET (analyzer_params); -
インデックスの
index_optionsをdocsに変更します。ALTER INDEX idx1 SET (index_options = 'docs'); -
index_optionsをデフォルト値のpositionsにリセットします。ALTER INDEX idx1 RESET (index_options);
インデックスの削除
構文
DROP INDEX [ IF EXISTS ] <idx_name> [ RESTRICT ];
パラメーター
パラメーターの詳細な説明については、「パラメーター」をご参照ください。
インデックスの表示
Hologres は hologres.hg_index_properties システムテーブルを提供しており、テーブルに作成されたフルテキスト転置インデックスとそれに対応する位置を表示できます。
SELECT * FROM hologres.hg_index_properties;
次の SQL ステートメントを実行して、インデックスに関連付けられたテーブルと列を表示します。
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;
パラメーター:
-
namespace:
SELECT * FROM hologres.hg_index_properties;コマンドの出力におけるtable_namespaceフィールドの値。 -
indexname:インデックスの実際の名前。
インデックス構築の進捗の表示
フルテキスト転置インデックスを作成した後、ビルトイン関数 hg_show_build_index_progress を使用して、インデックスの構築の進捗をリアルタイムで表示できます。この関数は、指定されたテーブル上のすべてのフルテキストインデックスの構築ステータスを返します。
例
SELECT * FROM hg_show_build_index_progress('<table_name>');
使用上の注意
-
この関数を呼び出すには、指定されたテーブルに対する SELECT 権限が必要です。
-
この関数は、構築されたファイル数、総ファイル数、パーセント単位の構築の進捗、推定残り時間など、テーブル上のすべてのフルテキストインデックスの構築情報を返します。
戻り値
結果には次のフィールドが含まれます:
|
フィールド |
データ型 |
説明 |
|
schema_name |
TEXT |
インデックスを含むスキーマの名前。 |
|
table_name |
TEXT |
テーブルの名前。 |
|
index_name |
TEXT |
インデックスの名前。 |
|
index_id |
BIGINT |
インデックスの一意の ID。 |
|
am_name |
TEXT |
インデックスのタイプ。 |
|
built_index_size |
TEXT |
構築されたインデックスのサイズ。 |
|
built_num_files |
INTEGER |
インデックス構築が完了したファイルの数。 |
|
target_num_files |
INTEGER |
インデックスを構築する必要があるファイルの総数。 |
|
progress |
TEXT |
構築の進捗 (パーセンテージ)。 |
|
estimated_remaining_time |
TEXT |
推定残り構築時間。 |
インデックスを使用した全文検索
Hologres はさまざまな検索モードをサポートしており、ビジネスロジックに合わせて全文検索を調整できます。
|
検索モード |
説明 |
|
キーワード一致 |
形態素解析された検索オブジェクト内のキーワードを検索します。AND/OR ロジックを使用してキーワード間の関係を定義できます。 |
|
フレーズ検索 |
完全なフレーズを検索します。一致するには、フレーズ内の単語が指定された距離内に現れる必要があります。 |
|
自然言語検索 |
自然言語構文を使用して複雑なクエリ条件を定義できます。これには、AND/OR ロジック、必須の term、除外する term、およびフレーズの指定が含まれます。 |
|
用語検索 |
検索オブジェクトの完全一致を実行します。一致を返すには、インデックスに完全なクエリ文字列が含まれている必要があります。 |
TEXT_SEARCH 関数
TEXT_SEARCH 関数は、検索オブジェクトに基づいて検索ソースの BM25 関連度スコアを計算します。
関数構文
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 '']
)
パラメーター
|
パラメーター |
必須 |
説明 |
|
search_data |
はい |
検索ソース。サポートされているデータ型は |
|
search_expression |
はい |
検索オブジェクト。サポートされているデータ型は |
|
mode |
いいえ |
検索モード。次のモードがサポートされています:
|
|
operator |
いいえ |
キーワード間に使用する論理演算子を指定します。このパラメーターは、mode が
|
|
tokenizer、analyzer_params |
いいえ |
search_expression のトークナイザーとその構成を指定します。ほとんどの場合、これらのパラメーターを構成する必要はありません。
|
|
options |
いいえ |
全文検索のその他のパラメーター。入力パラメーターのフォーマットは
説明
slop パラメーターは、フレーズ内の単語間に許容される最大の間隔 (または変換コスト) を表します。 |
戻り値
検索ソースと検索オブジェクト間の BM25 関連度スコアを表す非負の FLOAT 値を返します。スコアが高いほど関連性が高いことを示します。テキストが完全に関連しない場合、スコアは 0 です。
例
-
キーワード一致モードを使用し、演算子を
ANDに変更します。-- パラメーター名を指定することを推奨します。 SELECT TEXT_SEARCH (content, 'machine learning', operator => 'AND') FROM tbl; -- パラメーター名を指定しない場合は、正しい順序で指定する必要があります。 SELECT TEXT_SEARCH (content, 'machine learning', 'match', 'AND') FROM tbl; -
フレーズ検索モードを使用し、
slopを 2 に設定します。SELECT TEXT_SEARCH (content, 'machine learning', 'phrase', options => 'slop=2;') FROM tbl; -
自然言語検索モードを使用します。
-- AND および OR 演算子を使用して、トークンの検索ロジックを定義します。 SELECT TEXT_SEARCH (content, 'machine AND (system OR recognition)', 'natural_language') FROM tbl; -- + (必須の term) および - (除外する term) を使用して、トークンの検索ロジックを定義します。 SELECT TEXT_SEARCH (content, '+learning -machine system', 'natural_language') FROM tbl; -
term 検索モードを使用します。
SELECT TEXT_SEARCH (content, 'machine learning', 'term') FROM tbl; -
fuzzinessを 1 に設定したあいまい検索モードを使用します。SELECT TEXT_SEARCH (content, 'machine learning', 'fuzzy', options => 'fuzziness=1;') FROM tbl;
TOKENIZE 関数
TOKENIZE 関数は、トークナイザーの構成に基づいて形態素解析の結果を返します。この関数を使用して、全文転置インデックスの形態素解析をデバッグできます。
関数構文
TOKENIZE (
<search_data> TEXT
[ ,<tokenizer> TEXT DEFAULT ''
,<analyzer_params> TEXT DEFAULT '']
)
パラメーター
-
search_data:必須。形態素解析するターゲットテキスト。このパラメーターは定数でなければなりません。
-
tokenizer、analyzer_params:オプション。search_data テキストのトークナイザーとその構成を指定します。デフォルトのトークナイザーは、V4.1 以前では
jieba、V4.2 以降ではikです。
戻り値
ターゲットテキストからのトークンを含む TEXT 配列を返します。
インデックス使用の確認
実行計画をチェックして、SQL クエリがフルテキスト転置インデックスを使用しているかどうかを確認できます。計画に Fulltext Filter が存在する場合、インデックスが正常に使用されていることを示します。実行計画の詳細については、「EXPLAIN と EXPLAIN ANALYZE」をご参照ください。
SQL の例:
EXPLAIN ANALYZE SELECT * FROM wiki_articles WHERE text_search(content, 'Yangtze River') > 0;
実行計画は次のとおりです。Fulltext Filter フィールドが含まれており、SQL ステートメントがフルテキスト転置インデックスを正常に使用したことを示しています。
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
推奨事項
サーバーレスリソースを使用したインデックスの再構築
一部のプロパティ変更はコンパクションとインデックスの再構築をトリガーし、CPU 使用率が急上昇する可能性があります。これらの変更は次のように処理してください:
`bitmap_columns`、`dictionary_encoding_columns`、またはベクターインデックスの変更
ALTER TABLE ... SET の代わりに、サーバーレスコンピューティングリソースで REBUILD 構文を使用します。詳細については、「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
}
}
}'
);JSON データまたはフルテキストインデックス列の列ストレージの変更
REBUILD 構文は、これらの変更にはまだサポートされていません。代わりに一時テーブルを使用してください:
BEGIN;
-- 既存の一時テーブルをクリーンアップ
DROP TABLE IF EXISTS <table_new>;
-- 同じ構造で一時テーブルを作成
SET hg_experimental_enable_create_table_like_properties = on;
CALL HG_CREATE_TABLE_LIKE ('<table_new>', 'select * from <table>');
COMMIT;
-- 新しい列プロパティを一時テーブルに適用
ALTER TABLE <table_new> ALTER COLUMN <column_name> SET (enable_columnar_type = ON);
CREATE INDEX <idx_name> ON <table_new> USING FULLTEXT (column_name);
-- サーバーレスリソースを使用してデータを挿入 (インデックス構築は同期的に完了)
SET hg_computing_resource = 'serverless';
INSERT INTO <table_new> SELECT * FROM <table>;
ANALYZE <table_new>;
BEGIN;
-- 元のテーブルを一時テーブルに置き換え
DROP TABLE IF EXISTS <table>;
ALTER TABLE <table_new> RENAME TO <table>;
COMMIT;その他のプロパティ変更 (例:`distribution_key`、`clustering_key`、`segment_key`、ストレージフォーマット)
サーバーレスコンピューティングリソースで REBUILD 構文を使用します。
高度な操作:トークナイザー構成のカスタマイズ
Hologres は、デフォルトのトークナイザー構成を使用することを推奨します。ただし、フルテキスト転置インデックスのデフォルト構成がニーズを満たさない場合は、トークナイザーをカスタマイズして、より柔軟な形態素解析を行うことができます。
analyzer_params の要件
analyzer_params パラメーターは、次の要件を満たす必要があります:
-
JSON 文字列である必要があります。
-
トップレベルの JSON オブジェクトは、
tokenizerとfilterの 2 つのキーをサポートします。これらは次のように構成されます:-
filter:オプション。フィルターを構成するために使用される JSON 配列。複数のフィルターは指定された順序で適用されます。 -
tokenizer:必須。トークナイザーのプロパティを構成する JSON オブジェクト。この JSON オブジェクトは次のキーをサポートします:-
type:必須。トークナイザーの名前。 -
tokenizerオブジェクトのパラメーターは、トークナイザーによって異なります。詳細については、次の表をご参照ください:トークナイザー
パラメーター
説明
値
jieba
mode
形態素解析モード。
-
search(デフォルト):冗長性を許容し、複数の可能なトークンの組み合わせをリストアップします。 -
exact:冗長な分割を行いません。
hmm
隠れマルコフモデルを使用して辞書にない単語を識別するかどうかを決定します。この機能は新語の識別を向上させます。
-
true(デフォルト):モデルを使用します。 -
false:モデルを使用しません。
standard
max_token_length
最大トークン長。
正の整数。デフォルト値は 255 です。トークンがこの長さを超えると、
max_token_lengthの間隔で分割されます。ik
mode
形態素解析モード。
-
ik_max_word (デフォルト):すべての可能な短い単語を出力する、きめ細かい形態素解析。
-
ik_smart:トークン数を減らすために長い単語を優先する、粗い粒度の形態素解析モード。出力トークンは重複しません。このモードは、数字と助数詞を単一のトークンに結合しようとします。
enable_lowercase
トークンを小文字に変換するかどうかを決定します。
-
true(デフォルト) -
false
ngram
min_ngram
トークンの最小文字長。
正の数。デフォルトは 1 です。
max_ngramとの最大許容差は 3 です。注:次の GUC を設定することで、最大差を調整できます。例:
SET hg_fulltext_index_max_ngram_diff = 5;max_ngram
トークンの最大文字長。
正の数。デフォルトは 2 です。値は [1, 255] の範囲内である必要があります。
min_ngramとの最大許容差は 3 です。説明max_ngramとmin_ngramの差が大きいと、ngram トークナイザーが多くのトークンを生成し、リソース消費、ストレージ、インデックス構築時間が増加します。prefix_only
プレフィックス n-gram のみを生成するかどうかを決定します。
-
true -
false(デフォルト)
pinyin
keep_first_letter
各漢字の最初の文字を保持するかどうかを決定します。
-
true(デフォルト):pinyin の頭文字を保持します。 -
false:最初の文字を保持しません。
keep_separate_first_letter
各漢字の最初の文字を別のトークンとして保持するかどうかを決定します。
-
true:各文字の頭文字を保持します。
-
false(デフォルト):別のトークンとして保持しません。
limit_first_letter_length
結合された最初の文字を含むトークンの最大長。
整数。デフォルト値は 16 です。
keep_full_pinyin
各漢字の完全な Pinyin を保持するかどうかを決定します。
-
true (デフォルト):pinyin が保持されます。
-
false:完全な Pinyin を保持しません。
keep_joined_full_pinyin
各漢字の完全な Pinyin を単一のトークンに結合するかどうかを決定します。
-
true:連結を有効にします。
-
false(デフォルト):Pinyin を結合しません。
keep_none_chinese
結果に非中国語の文字や数字を保持するかどうかを決定します。
-
true(デフォルト):保持します。 -
false:保持しません。
keep_none_chinese_together
連続する非中国語の文字や数字を単一のトークンとして一緒に保持するかどうかを決定します。
-
true(デフォルト):文字と数字のシーケンスを一緒に保持します。 -
false:元の形式を保持しません。
説明このパラメーターは、
keep_none_chineseがtrueに設定されている場合にのみ有効です。keep_none_chinese_in_first_letter
最初の文字のトークンに非中国語の文字や数字を保持するかどうかを決定します。
-
true (デフォルト):トークンを保持します。
-
false:保持しません。
keep_none_chinese_in_joined_full_pinyin
結合された完全な Pinyin トークンに非中国語の文字や数字を保持するかどうかを決定します。
-
true:トークンを保持します。
-
false(デフォルト):保持しません。
none_chinese_pinyin_tokenize
非中国語の文字が有効な Pinyin を形成する場合に、それらを別々の Pinyin term に分割するかどうかを決定します。
-
true(デフォルト):分割します。 -
false:分割しません。
説明このパラメーターは、
keep_none_chineseとkeep_none_chinese_togetherがtrueに設定されている場合にのみ有効です。keep_original
元の入力を保持するかどうかを決定します。
-
true:元の入力を保持します。 -
false(デフォルト):元の入力を保持しません。
lowercase
非中国語の文字を小文字に変換するかどうかを決定します。
-
true(デフォルト) -
false
trim_whitespace
空白文字をトリミングするかどうかを決定します。
-
true(デフォルト) -
false
remove_duplicated_term
重複する term を削除するかどうかを決定します。
-
true:ストップワードを削除します。 -
false(デフォルト):重複を削除しません。
keep_separate_chinese
個々の漢字を別のトークンとして保持するかどうかを決定します。
-
true:文字を保持します。
-
false(デフォルト):保持しません。
-
-
-
デフォルトの analyzer_params
次の表は、異なるトークナイザーのデフォルトの analyzer_params 構成を示しています。
|
トークナイザー |
デフォルトの |
|
jieba (V4.1 以前のデフォルトトークナイザー) |
|
|
whitespace |
|
|
keyword |
|
|
simple |
|
|
standard |
|
|
icu |
|
|
ik (V4.2 以降のデフォルトトークナイザー) |
|
|
ngram |
|
|
pinyin |
|
filter の構成
Hologres は、analyzer_params で次のフィルターをサポートしています。
複数のフィルターは指定された順序で適用されます。
|
フィルター |
説明 |
パラメーターフォーマット |
使用例 |
|
lowercase |
トークン内の大文字を小文字に変換します。 |
フィルター名を文字列として使用します。
|
|
|
stop |
ストップワードトークンを削除します。 |
|
|
|
stemmer |
指定された言語の文法規則に基づいて、トークンをその語幹に変換します。 |
|
|
|
length |
指定された長さを超えるトークンを削除します。 |
|
|
|
removepunct |
句読文字のみで構成されるトークンを削除します。 |
フィルター名を文字列として使用します。
説明
V4.0.8 以降、
|
|
|
pinyin |
Pinyin 固有のトークンフィルタリングを提供します。 |
|
Pinyin トークナイザーと同じプロパティを使用します。 |