11.17.2 同義語検索を行う
スカラ関数CONTAINSを使用して同義語検索を行います。スカラ関数CONTAINSについては,マニュアルHADB SQLリファレンスのCONTAINSを参照してください。
(1) 基本的な検索例
同義語辞書Dictionary1を使用して,同義語検索を行います。同義語辞書Dictionary1には,次に示す語句が同義語として登録されています。
-
データベース,データバンク,database
- 例題
-
DOCUMENTS列には文書データが格納されています。その文書データ中に「データベース,データバンク,database」のどれかの語句が含まれている文書データ名(TITLE列)を検索します。
実行するSQL文
SELECT "TITLE" FROM "REPORTS" WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","データバンク")')>0
- [説明]
-
スカラ関数CONTAINS中に同義語辞書名(Dictionary1)と,Dictionary1に登録されている同義語の1つ(データバンク)を指定します。上記のSQL文を実行すると,同義語辞書の同義語グループに登録されている同義語(データベース,データバンク,database)のどれかが文章情報中に含まれている文書データ名(TITLE列)が検索結果として返されます。
- メモ
-
同義語辞書に登録されている同義語を調べる方法については,「11.17.3 同義語辞書に登録されている同義語を確認する」を参照してください。
(2) 表記ゆれ補正検索を適用した検索例
表記ゆれ補正検索に対応している同義語辞書Dictionary1を使用して,同義語検索を行います。同義語辞書Dictionary1には,次に示す語句が同義語として登録されています。
-
データベース,データバンク,database
- 例題
-
DOCUMENTS列には文書データが格納されています。その文書データ中に「データベース,データバンク,database,,,DATABASE」などの語句が含まれている文書データ名(TITLE列)を検索します。
実行するSQL文
SELECT "TITLE" FROM "REPORTS" WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1",SORTCODE("データバンク"))')>0
- [説明]
-
スカラ関数CONTAINS中に同義語辞書名(Dictionary1)と,Dictionary1に登録されている同義語の1つ(データバンク)を指定します。上記のSQL文を実行すると,同義語辞書の同義語グループに登録されている同義語(データベース,データバンク,database)のどれかが文章情報中に含まれている文書データ名(TITLE列)が検索結果として返されます。
さらに,表記ゆれ補正検索が働くため,,,DATABASEなどの語句が含まれている文書データの文書データ名(TITLE列)も検索結果として返されます。
(3) 2つの同義語辞書を使用した検索例
次に示す2つの同義語辞書を使用した検索例を説明します。
-
同義語辞書名:Dictionary2
Dictionary2には,次に示す語句が同義語として登録されています。
-
リレーショナルデータベース,RDB,relational database,NoSQLデータベース
-
-
同義語辞書名:Dictionary3
Dictionary3には,次に示す語句が同義語として登録されています。
-
リレーショナルデータベース,RDB,relational database,NoSQLデータベース,クラウドデータベース,ビッグデータデータベース
-
- 例題
-
次の条件をすべて満たす文書データ名(TITLE列)を検索します。
-
DOCUMENTS列に格納されている文書データ中に,「リレーショナルデータベース,RDB,relational database,NoSQLデータベース」のどれかの語句が含まれている
-
TITLE列に格納されている文書データ名中に,「リレーショナルデータベース,RDB,relational database,NoSQLデータベース,クラウドデータベース,ビッグデータデータベース」のどれかの語句が含まれている
SELECT "TITLE" FROM "REPORTS" WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary2","RDB")')>0 AND CONTAINS("TITLE",'SYNONYM("Dictionary3","RDB")')>0
-
(4) 注意事項
-
スカラ関数CONTAINSに指定した検索対象文字列が,同義語辞書に登録されていない場合,同義語検索は行われません。
(例)
同義語辞書に登録されている同義語が「データベース,データバンク,database」の場合に,次のSELECT文を実行しても,同義語検索は行われません。この場合,「RDB」だけが検索対象文字列になります。
SELECT "TITLE" FROM "REPORTS" WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1",SORTCODE("RDB"))')>0
-
同義語辞書の更新中(adbsyndictコマンドの実行中)に,更新中の同義語辞書を使用した同義語検索を実行できます。ただし,更新前の同義語辞書を使用した検索になるか,または更新後の同義語辞書を使用した検索になるかは,タイミングによって異なります。