ここでは,HiRDB Text Search Plug-inを利用して実現する全文検索の,edmSQLでの指定例を示します。
なお,<全文検索条件>および<概念検索条件>の指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。
この指定例で使用する文書は,次のようなクラスから作成された文書です。
表4-47 Document Xクラスのプロパティ
プロパティ識別子 | 内容 |
---|---|
Code | 文書を管理するためのコード |
Title | タイトル |
Author | 著者 |
Abstract | 概要 |
CreateDate | 作成日 |
edmProp_ConceptStIndex | 全文検索インデクス(概念検索および構造検索が可能な全文検索インデクス) |
全文検索の対象になる文書の作成方法については,「4.4 全文検索の対象になる文書の作成」を参照してください。
また,Document Xクラスは,構造を持ったXML文書の基になるDMAクラスです。構造『文章』の下位に,構造『名前』,構造『キーワード』および構造『本文』が定義されています。
Document Xクラスを基に作成したXML文書の例を次に示します。
<?xml version="1.0" encoding="Shift_JIS"?>
・・・
<文章>
<名前>
日立太郎
</名前>
<キーワード>
edmSQL・・・
</キーワード>
<本文>
edmSQLとは,SQLに準拠した・・・。
</本文>
</文章>
ここでは,contains関数を使用した全文検索の指定方法について説明します。
Document Xクラスの文書のうち,最上位の構造「文章」の下にある構造「本文」に,「コンピュータ」を含む文書のOIIDを取得します。ただし,「コンピュータ」は,同義語辞書「myDic」を使用して,同義語展開して検索します。
SELECT dmaProp_OIID
FROM "Document X"
WHERE contains(edmProp_ConceptStIndex,
'文章[本文{SYNONYM(myDic,"コンピュータ")}]') IS TRUE
ここでは,extracts関数を使用した全文検索の指定方法について説明します。
Document Xクラスの文書のうち,最上位の構造「文章」の下にある構造「本文」に,「Computer」を含む文書のコンテントを検索して,「Computer」に<STRONG>タグを付けたテキストを出力します。
SELECT extracts(edmProp_ConceptStIndex
'文章.本文','文章[本文{"COMPUTER"}]', 'STRONG')
FROM "Document X"
WHERE contains(edmProp_ConceptStIndex,
'文章[本文{"COMPUTER"}]') IS TRUE
ここでは,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
ここでは,score_concept関数とconcept_with_score関数を使用した概念検索の指定方法について説明します。
Document Xクラスの文書のうち,種文章と近い概念を含んでいる文書を検索します。種文章は,?パラメタとして指定します。したがって,実際の種文章の内容は,Binary型のデータとして,CdbrEqlStatement::SetParamメソッドによって指定してください。種文章は5メガバイトまで指定できます。
この例では,種文章から抽出された検索用特徴タームを,同義語辞書myDicを使用して同義語展開して検索します。
SELECT dmaProp_OIID,score_concept(edmProp_ConceptStIndex)
FROM "Document X"
WHERE concept_with_score
(edmProp_ConceptStIndex, ? AS BINARY (5m));