すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:ストップワード辞書を設定する

最終更新日:Feb 15, 2025

AnalyticDB for PostgreSQL インスタンスにインストールされている pgsearch 拡張機能は、中国語(CN_SIMPLE)および英語(EN_SIMPLE)の組み込みストップワード辞書を提供します。このトピックでは、ストップワード辞書を設定および使用する方法について説明します。

サポートされているバージョン

AnalyticDB for PostgreSQL V7.0 インスタンスのマイナーバージョンは V7.2.1.0 以降です。

説明

AnalyticDB for PostgreSQL インスタンスのマイナーバージョンを表示する方法については、「インスタンスのマイナーバージョンを表示する」をご参照ください。AnalyticDB for PostgreSQL インスタンスが上記の要件を満たしていない場合は、インスタンスのマイナーバージョンを更新することをお勧めします。詳細については、「UpgradeDBVersion」をご参照ください。

ストップワード辞書を更新する

ストップワード辞書は pgsearch.stopword_dict テーブルに格納されています。テーブル内のデータを更新して、ストップワードを追加、削除、または変更できます。AnalyticDB for PostgreSQL インスタンスの jieba アナライザのデフォルト辞書の名前は default です。1 つのインスタンスに複数のストップワード辞書を作成できます。ストップワードを追加する場合は、辞書を指定する必要があります。default 以外の指定された辞書が存在しない場合は、新しい辞書が作成され、ストップワードが辞書に追加されます。指定された辞書が存在する場合は、ストップワードが辞書に追加されます。ストップワードを変更または削除するときに辞書を指定しない場合は、すべての辞書がスキャンされ、ストップワードが変更または削除されます。

  • デフォルト辞書のストップワードを追加、削除、または変更します。

    -- 辞書名を指定して、デフォルト辞書にストップワードを追加します。
    INSERT INTO pgsearch.stopword_dict(dict,word) VALUES('default', '的');
    
    -- デフォルト辞書からストップワードを削除します。
    DELETE FROM pgsearch.stopword_dict WHERE dict='default' AND word='的 ';
    
    -- デフォルト辞書のストップワードを変更します。
    UPDATE pgsearch.stopword_dict SET word ='一个' WHERE dict='default' AND word ='的'; 
  • user_stop_cn 辞書のストップワードを追加、削除、または変更します。

    -- user_stop_cn 辞書にストップワードを追加します。
    INSERT INTO pgsearch.stopword_dict(dict,word) VALUES('user_stop_cn', '的');
    
    -- user_stop_cn 辞書からストップワードを削除します。
    DELETE FROM pgsearch.stopword_dict WHERE dict='user_stop_cn' AND word='的';
    
    -- user_stop_cn 辞書のストップワードを変更します。
    UPDATE pgsearch.stopword_dict SET word ='一个' WHERE dict='user_stop_cn' AND word ='的'; 
説明

辞書名列 dict とストップワード列 word は、テーブルの複合プライマリキーとして機能します。同じ辞書に重複するストップワードを追加することはできません。

辞書を読み込む

辞書を更新した後、SELECT pgsearch.reload_stopword_dict() 文を実行して、辞書をメモリに再読み込みする必要があります。この例では、user_stop_cn 辞書が読み込まれます。

SELECT pgsearch.reload_stopword_dict('user_stop_cn');

辞書をメモリに読み込んだ後、辞書を既存のデータに反映させるには、次の手順を順番に実行する必要があります。

  1. 既存のデータベース接続を閉じて、再接続します。

  2. 辞書の更新は、テーブル内の既存のデータには影響しません。辞書を既存のデータに反映させるには、インデックスを再構築します。

辞書を使用してインデックスを作成する

BM25 インデックスを作成するときに、stopword パラメーターを使用して、jieba アナライザのストップワード辞書を指定できます。

CALL pgsearch.create_bm25(
    index_name => '<index_name>',
    table_name => '<table_name>',
    text_fields => pgsearch.field('<column_name>', tokenizer=>pgsearch.tokenizer('jieba', SEARCH=>false, dict=>'<dict_name>', stopword=>'<stopword_dict_name>'))
);

ストップワードフィルタリングの効果をクエリする

ストップワード辞書のセグメンテーション効果をクエリします。

SELECT pgsearch.tokenizer(pgsearch.tokenizer('jieba', stopword=>'user_stop_cn'), '同一个世界');