スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
ここでは,全文検索プラグイン(HiRDB Text Search Plug-in)を使用した例について説明します。HiRDB Text Search Plug-inが提供する抽象データ型関数を次に示します。なお,プラグインが提供する抽象データ型関数については,各プラグインマニュアルを参照してください。
関数名 | 説明 |
---|---|
SGMLTEXT | SGML文書登録 |
contains | 構造指定検索 |
contains_with_score,score | スコア検索 |
この項では,薬品の取扱い説明書をSGML文書で管理する例について説明します。
例題で使用している表は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」のデータベースの作成(プラグインが提供する抽象データ型を含む表の場合)で定義している表を利用しています。
SGMLTEXT型の場合の検索例として,頭痛に効く薬品を調べる例を図2-47に示します。検索をするSQL文は,次のように記述できます。
SELECT 薬品ID FROM 薬品管理表 WHERE contains(取扱い説明書,'添付文書データ[効能{"頭痛"}]') IS TRUE
図2-47 SGMLTEXT型の場合の検索例(その1)
SGMLTEXT型の場合の検索例として,食あたりに効く薬品の薬品IDと在庫量を求める例を図2-48に示します。検索をするSQL文は,次のように記述できます。
SELECT 薬品管理表.薬品ID,在庫量 FROM 薬品管理表 LEFT OUTER JOIN 在庫表 ON 薬品管理表.薬品ID=在庫表.薬品ID WHERE contains(取扱い説明書,'添付文書データ[効能{"食あたり"}]') IS TRUE
図2-48 SGMLTEXT型の場合の検索例(その2)
SGMLTEXT型の場合の更新例として,薬品2の取扱い説明書を更新する例を図2-49に示します。更新をするSQL文は,次のように記述できます。
UPDATE 薬品管理表 SET 取扱い説明書 = SGMLTEXT(:sgml AS BLOB(1M)) WHERE 薬品ID = '薬品2'
EXEC SQL BEGIN DECLARE SECTION; 1. SQL TYPE IS BLOB(300K) sgml; 1. EXEC SQL END DECLARE SECTION; 1. strcpy(sgml.sgml_data,char_ptr_pointing_to_a_sgml_text); 2. sgml.sgml_length = strlen(char_ptr_pointing_to_a_sgml_text); 3. [説明]
図2-49 SGMLTEXT型の場合の更新例
SGMLTEXT型の場合の削除例として,薬品2を削除する例を図2-50に示します。行を削除するSQL文は,次のように記述できます。
DELETE FROM 薬品管理表 WHERE 薬品ID = '薬品2'
図2-50 SGMLTEXT型の場合の削除例
SGMLTEXT型の場合の挿入例として,薬品25の行を挿入する例を図2-51に示します。行を挿入するSQL文は,次のように記述できます。
INSERT INTO 薬品管理表(薬品ID,取扱い説明書) VALUES(薬品25,SGMLTEXT(:sgml AS BLOB(1M)))
EXEC SQL BEGIN DECLARE SECTION; 1. SQL TYPE IS BLOB(300K) sgml; 1. EXEC SQL END DECLARE SECTION; 1 strcpy(sgml.sgml_data,char_ptr_pointing_to_a_sgml_text); 2. sgml.sgml_length = strlen(char_ptr_pointing_to_a_sgml_text); 3. [説明]
図2-51 SGMLTEXT型の場合の挿入例
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.