1.3.1 XMLデータ検索
XML ExtensionのXMLデータ検索プラグインでは,ユーザが任意に指定したXMLデータをキーワードにして文書を検索します。例えば,キーワードを「最新技術」として,「『最新技術』という単語を含む文書を探す」という検索ができます。
検索のキーワードになる単語を,検索タームといいます。検索タームにさらに条件を付け加えることで,さまざまな条件での検索ができます。また,IXXMLインデクス型プラグインを作成することで,高速な検索を実現できます。
XML ExtensionでのXMLデータ検索の概要を次の図に示します。
|
- 〈この項の構成〉
(1) XMLデータ検索の特長
XML Extensionは,XMLデータをHiRDBの表の一つの列に格納して管理しています。XML列に対して,XQueryや抽象データ型関数を使っていろいろな操作ができます。
(2) XMLデータ検索の種類
XML ExtensionでのXMLデータ検索の基本は,検索タームを指定した検索方法です。この検索方法を基にXML Extensionで提供しているさまざまな検索機能を利用することで,XMLデータを柔軟に検索できます。XML Extensionで提供する検索条件の種類を次に説明します。
(a) 検索タームを複数指定する検索
検索条件には,検索タームを複数個指定できます。例えば,「『最先端技術』および『パソコン』の両方の単語が含まれるXMLデータ」を検索できます。この例では,検索ターム同士の論理積(AND条件)を検索の条件にしています。さらに,論理和(OR条件)を検索条件にして,「『最先端技術』または『パソコン』のうち,どちらかを含むXMLデータ」を検索できます。
(b) 近傍条件検索
二つの検索ターム間の文字数(距離)を検索条件にできます。例えば,「『最新』と『技術』の間の文字数が20文字ちょうどの文字列を含むXMLデータ」を検索できます。このような検索を近傍条件検索といいます。
(c) 同義語・異表記展開検索
例えば,「ski」を検索タームにする場合,「ski」「Ski」などで表記されているXMLデータも検索したい場合があります。同義語・異表記展開検索はこのような場合に使用します。
同義語展開検索では,同義語辞書の定義に基づいて,検索タームの同義語が自動的に展開されます。異表記展開検索では,XML Extensionでのルールに基づいて自動的に検索タームの異表記が展開されます。展開された同義語・異表記は,検索タームとあわせて検索条件にできます。
HiRDBのLIKE述語には,同義語・異表記展開の機能はありません。文字列データの同義語・異表記展開検索を実行する場合は,Text Search Plug-inの文字列検索プラグインを使用してください。
(d) 論理演算検索
検索条件式同士の論理演算を条件にする検索を,論理演算検索といいます。例えば,「『条件A』および『条件B』で,両方の条件に一致するXMLデータ」を検索できます。この例では,検索条件同士の論理積(AND条件)を検索条件にしています。さらに,論理和(OR条件)を検索の条件にして,「『条件A』または『条件B』のうち,どちらかの条件に一致するXMLデータ」を検索できます。
(e) 構造名を指定した検索
XMLデータ検索プラグインでXMLデータを検索する場合は,構造名を指定した検索ができます。例えば「文書・章・節・項」という要素を持つXMLデータを格納する列があるとします。この列に対して「節の中に『XML』という単語を含むXMLデータ」のように,構造を条件にして検索できます。
(f) 重み付き検索
検索条件に複数のキーワードを指定する場合,それぞれの条件に対して「重み」(重要度)を指定できます。
例えば,「政治」と「経済」という二つのキーワードが含まれるXMLデータを検索する場合に,「経済」というキーワードより,「政治」というキーワードの重要度を上げて検索できます。この場合,「政治」の出現回数によって得点(スコア)を付けた検索結果が得られます。なお,文字列検索プラグインでは検索条件に重みを指定できません。
(g) NOT検索
検索タームを含まないXMLデータを検索できます。例えば,「『イントラネット』を含まないXMLデータ」を検索できます。このような検索を,NOT検索といいます。ただし,スコア情報は取得できません。
(h) ほかの列の検索条件との複合条件検索
検索タームを指定した条件に加えて,XMLデータ以外の情報を格納した列に対する検索条件を組み合わせて検索できます。例えば,XMLデータを格納している列とXMLデータ作成日付を格納している列を持つ表に対して,「『先端技術』という単語を含み,2007/1/1以降であるXMLデータ」を検索できます。
(i) 除外文字検索
検索タームの一部または前後に特定の文字がある場合を除外して,該当するXMLデータを検索できます。例えば,「ローマ」を含むXMLデータの中で,「ローマ字」を含むXMLデータだけを除外して検索できます。