5.11.2 全文検索(HiRDB Text Search Plug-inを利用した検索)

ここでは,HiRDB Text Search Plug-inを利用した全文検索実行時の,edmSQLの指定例を示します。

なお,<全文検索条件>および<概念検索条件>の指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。

<この項の構成>
(1) 指定例で使用するクラスとプロパティ
(2) contains関数を使用した全文検索
(3) extracts関数を使用した全文検索
(4) score関数とcontains_with_score関数を使用した全文検索
(5) score_concept関数とconcept_with_score関数を使用した概念検索

(1) 指定例で使用するクラスとプロパティ

この指定例で使用する文書は,次のようなクラスから作成された文書です。

文書X
Document Xクラスを基に作成された文書です。Document Xクラスは,全文検索機能付き文書クラスとして作成されています。また,ユーザ定義プロパティも設定されています。Document Xクラスの主なプロパティを次の表に示します。

表5-43 Document Xクラスのプロパティ

プロパティ識別子内 容
Code文書を管理するためのコード
Titleタイトル
Author著者
Abstract概要
CreateDate作成日
edmProp_ConceptStIndex全文検索インデクス(概念検索および構造検索ができる全文検索インデクス)

全文検索の対象になる文書の作成方法については,「4.5 全文検索の対象になる文書の作成」を参照してください。

また,Document Xクラスは,構造を持ったXML文書の基になるDMAクラスです。構造『文章』の下位に,構造『名前』,構造『キーワード』および構造『本文』が定義されています。

Document Xクラスを基に作成したXML文書の例を次に示します。

Document Xクラスを基に作成したXML文書の例

<?xml version="1.0" encoding="Shift_JIS"?>
・・・
<文章>
 <名前>
 日立太郎
 </名前>
 <キーワード>
 edmSQL・・・
 </キーワード>
 <本文>
 edmSQLとは,SQLに準拠した・・・。
 </本文>
</文章>

(2) contains関数を使用した全文検索

ここでは,contains関数を使用した全文検索の指定方法について説明します。

Document Xクラスの文書のうち,最上位の構造『文章』の下にある構造『本文』に「コンピュータ」を含む文書のOIIDを取得します。ただし,「コンピュータ」は,同義語辞書「myDic」を使用して,同義語展開して検索します。

指定例

SELECT dmaProp_OIID
FROM   "Document X"
WHERE  contains(edmProp_ConceptStIndex,
      '文章[本文{SYNONYM(myDic,"コンピュータ")}]') IS TRUE

(3) extracts関数を使用した全文検索

ここでは,extracts関数を使用した全文検索の指定方法について説明します。

Document Xクラスの文書のうち,最上位の構造『文章』の下にある構造『本文』に「Computer」を含む文書のコンテンツを検索して,「Computer」に<STRONG>タグを付けたテキストを出力します。

指定例

SELECT extracts(edmProp_ConceptStIndex
'文章.本文','文章[本文{"COMPUTER"}]', 'STRONG')
FROM  "Document X"
WHERE contains(edmProp_ConceptStIndex,
      '文章[本文{"COMPUTER"}]') IS TRUE

(4) score関数とcontains_with_score関数を使用した全文検索

ここでは,score関数とcontains_with_score関数を使用した全文検索の指定方法について説明します。

Document Xクラスの文書のうち,最上位の構造『文章』の下にある構造『本文』に「コンピュータ」を含む文書のOIIDを取得します。ただし,「コンピュータ」は,同義語辞書「myDic」を使用して,同義語展開して検索します。

また,検索結果として,Titleプロパティ,Authorプロパティとともに,検索条件に対する文書のスコア(score)を取得します。scoreは,contains_with_score関数によって算出されます。したがって,スコア値を取得する検索を実行する場合は,このようにscore関数とcontains_with_score関数を組み合わせて指定します。

さらに,この例では,取得したスコア値を基に,検索結果を昇順にソートします。

指定例

SELECT dmaProp_OIID,Title,Author,score(edmProp_ConceptStIndex)
FROM   "Document X"
WHERE contains_with_score(edmProp_ConceptStIndex,
       '文章[本文{SYNONYM(myDic,"コンピュータ")}]') IS TRUE
ORDER BY 3 ASC

(5) score_concept関数とconcept_with_score関数を使用した概念検索

ここでは,score_concept関数とconcept_with_score関数を使用した概念検索の指定方法について説明します。

Document Xクラスの文書のうち,種文章と近い概念を含んでいる文書を検索します。種文章は,?パラメタとして指定します。種文章は5メガバイトまで指定できます。

この例では,種文章から抽出された検索用特徴タームを,同義語辞書myDicを使用して同義語展開して検索します。

指定例

SELECT dmaProp_OIID,
     score_concept(edmProp_ConceptStIndex)
FROM  "Document X"
WHERE concept_with_score
      (edmProp_ConceptStIndex, ? AS BINARY (5m));