Oracle Text
Oracle Text を使用すると長い文章の途中の文字列を検索するような場合でも
索引を使用することができる。
CTXAPPロールの付与
SQL> connect ctxsys
SQL> grant ctxapp to ユーザ名;
プリファレンス作成
日本語のテキストからトークンを抽出するには、
レクサーにJAPANESE_VGRAM_LEXERまたは、JAPANESE_LEXERを指定します。
BEGIN
ctx_ddl.create_preference('プリファレンス名', 'JAPANESE_LEXER');
END;
索引の作成
CREATE INDEX 索引 ON 表(列)
INDEXTYPE IS ctxsys.context
PARAMETERS('lexer プリファレンス名');
再作成
SQL> ALTER INDEX 索引 REBUILD;
索引が作成されると、索引表という表が作成されます。
索引表の名前は、DR$索引名$% となります。
SQL> select table_name from user_tables
2 where table_name like 'DR$索引名$%';
SQL> select token_text from DR$索引名$I;
検索
SELECT * FROM テーブル名
WHERE CONTAINS (列名, '検索文字列') > 0;
索引の同期化
BEGIN
ctx_ddl.sync_index('索引名');
END;
索引の最適化
BEGIN
CTX_DDL.OPTIMIZE_INDEX('索引名','FULL');
END;
第二引数に次のいずれかを指定します。
・完全(FULL)
・高速(FAST)
・トークン(TOKEN)
|