はじめに

Vertica8.0から、テキストインデックスがマルチバイト文字対応となり、日本語による全文検索が可能になりました。

本記事では、テキストインデックスを用いた日本語による全文検索を行う方法を紹介します。

テキストインデックスを用いた日本語による全文検索を行う手順

VerticaではICU Tokenizerというトークナイザーを使用することにより、日本語を含むマルチバイトの文字を識別することができます。

そのため、テキストインデックスを使ってマルチバイト文字の検索を行うためには、まずICU Tokenizerを構成する必要があります。

ICU Tokenizerの構成

1.トークナイザーを構成します
ICU Tokenizerの構成は、CREATE TRANSFORM FUNCTION文にて行います。

構文

CREATE TRANSFORM FUNCTION文の詳細については、以下をご確認ください。

CREATE TRANSFORM FUNCTION
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/CREATETRANSFORMFUNCTION.htm

実行例

2.トークナイザーのプロシージャIDを確認します

3.先ほどのプロシージャIDを使用し、トークナイザーのロケールを日本語に設定します
ロケールの設定は、SET_TOKENIZER_PARAMETER関数にて行います。

構文

SET_TOKENIZER_PARAMETER関数の詳細については、以下をご確認ください。

SET_TOKENIZER_PARAMETER
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/VerticaFunctions/TextSearch/setTokenizerParameter.htm

実行例

4.トークナイザーを有効化します

これで全文検索する準備は完了です。

テキストインデックスの作成

以下のテーブルに対して、テキストインデックスを作成していきます。

1.テキストインデックスの作成
テキストインデックスの作成は、CREATE TEXT INDEX文にて行います。

構文

CREATE TEXT INDEX文の詳細は、以下をご確認ください。

CREATE TEXT INDEX
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATETEXTINDEX.htm

実行例

2.作成したインデックスの確認

テキストインデックスを用いた日本語による全文検索

構文

table1テーブルから「アシスト」を含むデータをテキストインデックスを使用して検索します。

実行例

参考情報

ICU Tokenizer
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/AdministratorsGuide/Tables/TextSearch/AdvancedTextSearch/ICUTokenizer.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/04/15 検証バージョンを9.2に変更
2016/12/02 本記事を公開