5.9.2 文書検索関数(DBMS関数)
(1) <文書検索関数>の形式
!! <文書検索関数>の形式
<文書検索関数> ::= <全文検索関数>
|<概念検索関数>
!! <全文検索関数>の形式
<全文検索関数> ::= <contains関数>
|<contains_with_score関数>
|<score関数>
|<extracts関数>
!! <contains関数>の形式
<contains関数> ::= contains <左括弧><プロパティ指定>
<コンマ><全文検索条件><右括弧>
!! <contains_with_score関数>の形式
<contains_with_score関数> ::= contains_with_score
<左括弧><プロパティ指定>
<コンマ><全文検索条件><右括弧>
!! <score関数>の形式
<score関数> ::= score <左括弧><プロパティ指定><右括弧>
!! <extracts関数>の形式
形式1
<extracts関数> ::= extracts <左括弧><プロパティ指定><コンマ>
<抽出対象構造文字列> <コンマ>
<全文検索条件> <コンマ>
<ハイライトタグ文字列> <右括弧>
形式2
<extracts関数> ::= extracts <左括弧><全文検索機能付き文字列型プロパティ>
<右括弧>
!! <概念検索関数>の形式
<概念検索関数> ::= <concept_with_score関数>
|<score_concept関数>
!! <concept_with_score関数>の形式
<concept_with_score関数> ::= concept_with_score
<左括弧><プロパティ指定>
<コンマ><概念検索条件><右括弧>
!! <score_concept関数>の形式
<score_concept関数> ::= score_concept
<左括弧><プロパティ指定><右括弧>
!! <全文検索条件><概念検索条件><抽出構造文字列>および<ハイライトタグ文字列>の形式
<全文検索条件> ::= <文字列リテラル> | <?パラメタ>
<概念検索条件> :: = <?パラメタ>
<抽出対象構造文字列> ::= <文字列リテラル> | <?パラメタ>
<ハイライトタグ文字列> ::= <文字列リテラル> | <?パラメタ>
<全文検索条件>,<概念検索条件>,<抽出対象構造文字列>および<ハイライトタグ文字列>の指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。
(2) <文書検索関数>の概要
<文書検索関数>には,次の機能があります。
- 全文検索機能(概念検索を含まない全文検索)
- 概念検索機能
<文書検索関数>では,次に示す関数が定義されています。なお,以降,関数の説明で使用する"<全文検索関数>"という表記は,概念検索の機能を持たない全文検索を実行するための関数を表します。
- 全文検索関数
- contains関数
- contains_with_score関数
- score関数
- extracts関数
- 概念検索関数
- concept_with_score関数
- score_concept関数
なお,全文検索関数を実行する場合は,HiRDB Text Search Plug-inが必要です。
また,概念検索関数を実行する場合は,HiRDB Text Search Plug-inおよびHiRDB Text Search Plug-in Conceptual Extensionが必要です。
(3) <文書検索関数>の規則
- <文書検索関数>は,HiRDB Text Search Plug-inの機能によって提供されている検索機能をedmSQLで使用するための関数です。
この関数で実行する検索の検索条件の指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。ただし,関数の第1引数には,列ではなくDocumentBrokerのプロパティを指定します。
- 第1引数の<プロパティ指定>に指定できるのは,その関数で指定できる<特殊なプロパティ>または全文検索機能付き文字型プロパティです。
- <文書検索関数>は,<結合条件>には指定できません。
(4) <全文検索関数>の概要
全文検索関数には,次の種類があります。なお,この関数で実行する全文検索に,概念検索は含まれません。
- contains関数
全文検索を実行します。
- contains_with_score関数
全文検索を実行すると同時に,スコア値を算出します。
- score関数
contains_with_score関数で算出したスコア値を取得します。
- extracts関数
文書からテキストデータを抽出します。抽出するデータは,構造を持つ文書の特定の構造にハイライトタグを埋め込んだデータです。
(5) <contains関数>の詳細
contains関数の詳細について説明します。
- 関数名
- contains
- 形式
contains <左括弧><プロパティ指定><コンマ><全文検索条件><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティまたは全文検索機能付き文字列型プロパティ>)
- ●特殊なプロパティの場合
- 検索対象の全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるのは,次の<特殊なプロパティ>です。
- edmProp_StIndexプロパティ
- edmProp_TextIndexプロパティ
- edmProp_ConceptTextIndexプロパティ
- edmProp_ConceptStIndexプロパティ
- ●全文検索機能付き文字列型プロパティの場合
- 全文検索機能付き文字列型プロパティを指定します。
- <全文検索条件>(文字列型の値:STRING(32000))
- 全文検索条件を指定します。
- 検索タームを含む文書が検索されます。
- <全文検索条件>には,検索タームのほか,構造指定検索,同義語異表記展開検索,近傍条件検索などを実行するための検索条件を文字列で指定します。指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。
- <全文検索条件>に<?パラメタ>を指定する場合は,次のようにAS<データ型指定>をします。
? AS STRING(32000)
- 機能
- <プロパティ指定>で指定したプロパティに対応する文書のコンテンツに対して,<全文検索条件>で指定した条件で,全文検索を実行します。
- 評価値
- 論理型(評価)
- 属性
- この関数は,<WHERE句>の<検索条件>に指定できます。
(6) <contains_with_score関数>の詳細
contains_with_score関数の詳細について説明します。
- 関数名
contains_with_score
- 形式
contains_with_score <左括弧><プロパティ指定><コンマ><全文検索条件><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティ>)
- 検索対象の全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるのは,次の<特殊なプロパティ>です。
- edmProp_TextIndexプロパティ
- edmProp_StIndexプロパティ
- edmProp_ConceptTextIndexプロパティ
- edmProp_ConceptStIndexプロパティ
- <全文検索条件>(文字列型の値:STRING(32000))
- 全文検索条件を指定します。全文検索条件に指定した検索タームが含まれる文書が検索されます。定義長は32,000バイトです。
- <全文検索条件>には,検索タームのほか,構造指定検索,同義語異表記展開検索,近傍条件検索などの検索を実行するための検索条件を文字列で指定します。指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。
- <全文検索条件>に<?パラメタ>を指定する場合は,次のようにAS<データ型指定>をします。
? AS STRING(32000)
- 機能
- <プロパティ指定>で指定したプロパティに対応する文書に対して,<全文検索条件>で指定した条件で,全文検索を実行します。
- このとき,検索結果として取得した文書から,全文検索条件が含まれる割合を,スコアとして算出します。
- 算出したスコアの取得には,<score関数>を使用します。
- 評価値
- 論理型(評価)
- 属性
- この関数は,<WHERE句>の<検索条件>に指定できます。
(7) <score関数>の詳細
<score関数>の詳細について説明します。
- 関数名
- score
- 形式
- score <左括弧><プロパティ指定><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティ>)
- スコアの値を取得する全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるのは,次の<特殊なプロパティ>です。
- edmProp_TextIndexプロパティ
- edmProp_StIndexプロパティ
- edmProp_ConceptTextIndexプロパティ
- edmProp_ConceptStIndexプロパティ
- 機能
- <contains_with_score関数>で検索結果として取得した文書に対して,文書の検索条件に対するスコア値(全文検索条件が含まれる割合に応じた値)を返却します。
- 評価値
- スコア値(整数型)
- 属性
- この関数は,<SELECT句>の<選択項目>に指定できます。
(8) <extracts関数>の詳細
<extracts関数>は,検索結果として取得する文書から,テキストデータを抽出する関数です。
<extracts関数>は,次の関数と組み合わせて使用することで,全文検索条件を満たした文書のテキストデータを抽出できます。
- contains関数
- contains_with_score関数
また,次の関数と組み合わせて使用することで,全文検索条件を満たした全文検索機能付き文字列型プロパティを抽出できます。
<extracts関数>の詳細について説明します。
- 関数名
- extracts
- 形式1
extracts <左括弧><プロパティ指定><コンマ><抽出対象構造文字列><コンマ><全文検索条件><コンマ><ハイライトタグ文字列><右括弧>
- 形式2
extracts <左括弧><全文検索機能付き文字列型プロパティ><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティ>)
- 抽出対象の全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるプロパティは,次の<特殊なプロパティ>です。
- edmProp_TextIndexプロパティ
- edmProp_StIndexプロパティ
- edmProp_ConceptStIndexプロパティ
- edmProp_ConceptTextIndexプロパティ
- <全文検索機能付き文字列型プロパティ>
- 全文検索機能付き文字列型プロパティを指定します。
- <抽出対象構造文字列>(文字列型の値:STRING(1024))
- 抽出対象にする構造を表す文字列を指定します。
- 構造を指定しない場合は,「''」(空文字列)を指定してください。
- <抽出対象構造文字列>に<?パラメタ>を指定する場合は,次のようにAS<データ型指定>をします。
? AS STRING(1024)
- <全文検索条件>(文字列型の値:STRING(32000))
- ハイライト表示する検索タームを指定します。
- 条件を指定しない場合は,「''」(空文字列)を指定してください。この場合,ハイライトタグは挿入されません。
- <全文検索条件>に<?パラメタ>を指定する場合は,次のようにAS<データ型指定>をします。
? AS STRING(32000)
- <ハイライトタグ文字列>(文字列型の値:STRING(255))
- ハイライト表示に使用するタグを表す文字列を指定します。
- ハイライトタグを指定しない場合は,「''」(空文字列)を指定してください。この場合,ハイライトタグは挿入されません。
- <ハイライトタグ文字列>に<?パラメタ>を指定する場合は,次のようにAS<データ型指定>をします。
? AS STRING(255)
- 機能
- <プロパティ指定>で指定したプロパティに対応する文書のコンテンツから,<抽出指定構造文字列>および<全文検索条件>で指定した文字列に<ハイライトタグ文字列>に指定したタグ(文字列)を埋め込んだ状態で抽出します。
- HiRDB Text Search Plug-inの「SGML出力」に対応します。
- また,<全文検索機能付き文字列型プロパティ>で指定した全文検索機能付き文字列型プロパティの値を抽出します。
- 評価値
- 抽出したテキストまたはプロパティの値(バイナリ型データ)
- 抽出するデータは,HiRDB Text Search Plug-inのBLOB型で2ギガバイトまでのデータです。ただし,検索結果としては,Java クラスライブラリで扱うことができるString型の値に変換したものを取得できます。
- 属性
- この関数は,<SELECT句>の<選択項目>に指定できます。
- ただし,この関数を<SELECT句>に指定した場合,<集合指定子>としてDISTINCTは指定できません。
(9) <概念検索関数>の概要
概念検索関数には,次の種類があります。
- concept_with_score関数
概念検索を実行すると同時に,スコア値を算出します。
- score_concept関数
concept_with_score関数で算出したスコア値を取得します。
(10) <concept_with_score関数>の詳細
<concept_with_score関数>の詳細について説明します。
- 関数名
- concept_with_score
- 形式
concept_with_score <左括弧><プロパティ指定><コンマ><概念検索条件><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティ>)
- 検索対象の全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるプロパティは,次の<特殊なプロパティ>です。
- edmProp_ConceptTextIndex
- edmProp_ConceptStIndex
- <概念検索条件>(バイナリ型のデータ:BINARY(5m))
- 概念検索条件を指定します。概念検索条件には,種文章を指定します。種文章を含む<概念検索条件>を指定する場合には,必ず<?パラメタ>を使用して指定してください。また,ここで指定する<?パラメタ>には,構造指定検索や同義語異表記検索などの検索を実行するための検索条件も指定します。指定方法については,マニュアル「HiRDB Text Search Plug-in」を参照してください。
- <概念検索条件>を<?パラメタ>で指定する場合は,次のようにAS<データ型指定>をします。
? AS BINARY(5m)
- AS<データ型指定>を含んだ,concept_with_score関数を呼び出す論理述語は,次のように指定します。
concept_with_score(edmProp_ConceptStIndex,
? AS BINARY(5m)) IS TRUE
- 機能
- <プロパティ指定>で指定したプロパティに対応する文書のコンテンツに対し,<概念検索条件>で指定した条件で,概念検索を実行します。
- また,検索実行時に,検索結果として取得した文書から検索用特徴タームが含まれる割合をスコアとして算出します。
- このスコアを取得する場合は,<score_concept関数>を使用します。
- 評価値
- 論理型(評価)
- 属性
- この関数は,<WHERE句>の<検索条件>に指定できます。
(11) <score_concept関数>の詳細
<score_concept関数>の詳細について説明します。
- 関数名
- score_concept
- 形式
- score_concept <左括弧><プロパティ指定><右括弧>
- 引数
- <プロパティ指定>(<特殊なプロパティ>)
- スコアの値を取得する全文検索機能付き文書クラスが特定できる形式でプロパティを指定します。
- 指定できるのは,次の<特殊なプロパティ>です。
- edmProp_ConceptTextIndexプロパティ
- edmProp_ConceptStIndexプロパティ
- 機能
- <concept_with_score関数>で検索結果として取得した文書に対して,文書の検索条件に対するスコア値(検索用特徴タームが含まれる割合に応じた値)を返却します。
- 評価値
- スコア値(整数型)
- 属性
- この関数は,<SELECT句>の<選択項目>に指定できます。