4.7.8 定義情報ファイルの記述例(文字列型プロパティに対する全文検索機能を使用する場合)

文字列型プロパティに対する全文検索機能を使用する場合の定義情報ファイルについて,例題に沿って説明します。

全文検索機能を使用できる文字列型プロパティのことを全文検索機能付き文字列型プロパティといいます。文字列型プロパティに対して全文検索機能を使用する場合,全文検索機能付き文字列型プロパティを追加します。

なお,全文検索機能付き文字列型プロパティの追加方法は,基本的にString型のプロパティの追加方法と同じです。そのため,ここではString型のプロパティの追加方法と異なる個所について説明します。String型のプロパティの追加方法については,「4.7.4 定義情報ファイルの記述例」を参照してください。

また,データベース定義の名称定義の方法がGUID値を変換した値を使用する方法の場合,文字列型プロパティに対する全文検索機能を使用できません。データベース定義の名称については,「3.11.1 データベース定義の名称の検討」を参照してください。

<この項の構成>
(1) 使用する例題
(2) 全文検索機能付き文字列型プロパティの追加方法

(1) 使用する例題

全文検索機能付き文字列型プロパティを文書クラスに定義するための例題を次に示します。

(例)
管理する文書として「設計ドキュメント」を定義します。この文書は,製品の開発に関する情報を管理します。
「設計ドキュメント」を管理するためにサブクラスを追加します。追加するサブクラスには,全文検索機能付き文字列型プロパティを追加します。
追加するサブクラスとそのスーパークラスを次に示します。

表4-20 追加するサブクラスとそのスーパークラス(文字列型プロパティに対する全文検索機能を使用する場合)

管理する文書追加するサブクラススーパークラス
設計ドキュメントusrClass_PropTextSearchdmaClass_DocVersion
dmaClass_DocVersionクラスのサブクラスとしてusrClass_PropTextSearchクラスを追加して,設計ドキュメントを管理します。
また,文書に付加する情報としてプロパティを追加します。設計ドキュメントの付加情報と,付加情報に対応するプロパティを次の表に示します。

表4-21 usrClass_PropTextSearchクラスの構造

クラス名付加情報プロパティ名データ型
usrClass_PropTextSearch文書名usrProp_DocNameString型
執筆者usrProp_DocWriterString型
文書の概要usrProp_DocSummary
(全文検索機能付き文字列型プロパティ)
String型

usrProp_DocSummaryプロパティは,全文検索機能付き文字列型プロパティです。

全文検索機能付き文字列型プロパティを追加できるクラスは次のとおりです。

(2) 全文検索機能付き文字列型プロパティの追加方法

全文検索機能付き文字列型プロパティを追加するには,プロパティを追加するために必要な情報を定義情報ファイルに記述します。

全文検索機能付き文字列型プロパティを追加する場合の定義情報ファイルの記述方法について,「(1) 使用する例題」で設定した例題に沿って説明します。

(a) 追加するプロパティのデータ型に対応する仮定値の定義

サブクラスに追加するプロパティのデータ型ごとに,プロパティの詳細情報(プロパティディスクリプション)を定義します。ここでは,データ型ごとで共通に指定するプロパティの仮定値を記述します。

なお,全文検索機能付き文字列型プロパティのデータ型はString型です。そのため,[AssumeProperty/DMA_DATATYPE_STRING]で指定する仮定値は,データ型がString型のプロパティと全文検索機能付き文字列型プロパティで共通の値になります。

例題で追加するプロパティはすべてString型なので,String型に対応する仮定値を記述します。

記述例を次に示します。

;
; DMA_DATATYPE_STRINGの仮定値
;
[AssumeProperty/DMA_DATATYPE_STRING]
dmaProp_QueryOperatorDescriptions
=obj=dsqop.ini@dmaQueryOperator_EqualString
=obj=dsqop.ini@dmaQueryOperator_UnequalString
dmaProp_Cardinality=int=DMA_CARDINALITY_SINGLE
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
dmaProp_IsOrderable=bool=1
dmaProp_PropertyDefaultString=text=NULL
dmaProp_MaximumLengthString=int=64

記述例について説明します。

<アクションの説明>
ここでは,[AssumeProperty/データタイプ]のエントリとして追加するプロパティ自身のプロパティを記述します。
[AssumeProperty/データタイプ]
全文検索機能付き文字列型プロパティを追加する場合,「データタイプ」には「DMA_DATATYPE_STRING」を指定します。
[AssumeProperty/データタイプ]に続くエントリには,[AddProperty/クラス名]で記述を省略するプロパティの仮定値を記述します。
<プロパティの説明>
ここでは,[AssumeProperty/DMA_DATATYPE_STRING]のエントリとして追加するプロパティを記述します。
[AssumeProperty/DMA_DATATYPE_STRING]のエントリとして追加するプロパティのうち,仮定値の定義方法がString型のプロパティを追加する場合と異なるプロパティを次に示します。そのほかのプロパティは,String型のプロパティを追加する場合に記述するプロパティと同じです。
  • dmaProp_QueryOperatorDescriptionsプロパティ
    全文検索機能付き文字列型プロパティを追加する場合,このプロパティの指定は無視されます。
  • dmaProp_IsSelectableプロパティ
    追加するプロパティが検索結果集合の一項目として選択できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索結果集合の一項目として選択できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索結果集合の一項目として選択できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
    [AssumeProperty/DMA_DATATYPE_STRING]での指定を省略する場合は,全文検索機能付き文字列型プロパティを追加する[AddProperty/クラス名]で「1」を指定してください。
  • dmaProp_IsSearchableプロパティ
    追加するプロパティが検索の条件として使用できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索の条件として使用できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索の条件として使用できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
    [AssumeProperty/DMA_DATATYPE_STRING]での指定を省略する場合は,全文検索機能付き文字列型プロパティを追加する[AddProperty/クラス名]で「1」を指定してください。
  • dmaProp_IsOrderableプロパティ
    全文検索機能付き文字列型プロパティを追加する場合,このプロパティの指定は無視されます。全文検索機能付き文字列型プロパティは,検索結果をソートできません。

(b) サブクラスの追加とプロパティの追加に関する定義

全文検索機能付き文字列型プロパティを追加する場合に,追加するサブクラスの定義とそのサブクラスに追加するプロパティの定義について記述します。記述例を次に示します。

;
; 設計ドキュメント用のサブクラスの定義
;
[AddSubClass]
dmaProp_DisplayName=text=dmaClass_DocVersion/usrClass_PropTextSearch

;
; 文書名(usrProp_DocNameプロパティの定義)
;
[AddProperty/usrClass_PropTextSearch]
dmaProp_DisplayName=text=usrProp_DocName
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 執筆者(usrProp_DocWriterプロパティの定義)
;
[AddProperty/usrClass_PropTextSearch]
dmaProp_DisplayName=text=usrProp_DocWriter
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 文書の概要(usrProp_DocSummaryプロパティの定義)
;
[AddProperty/usrClass_PropTextSearch]
dmaProp_DisplayName=text=usrProp_DocSummary
dmaProp_DataType=int=DMA_DATATYPE_STRING
dmaProp_MaximumLengthString=int=255
edmProp_SearchExtention=text=FreeWordIndex

記述例について説明します。

<サブクラスを追加するためのアクションの説明>
サブクラスを追加するためには,定義情報として[AddSubClass]を指定します。アクション名に続くエントリには,次に示すプロパティとその値を指定します。
  • dmaProp_DisplayName
    追加するサブクラス名を値として指定します。
    ここでは,dmaClass_DocVersionクラスのサブクラスとしてusrClass_PropTextSearchクラスを作成するので,「dmaClass_DocVersion/usrClass_PropTextSearch」と指定しています。
  • dmaProp_DescriptiveTextプロパティ
    追加するサブクラスを簡単に説明する文字列を値として指定します。指定を省略した場合,dmaProp_DisplayNameプロパティに指定した値から「スーパークラス名/」を除いたサブクラス名,すなわち,usrClass_PropTextSearchが仮定されます。
    ここでは,記述を省略しています。
  • dmaProp_Idsプロパティ
    追加するサブクラスに付与するGUIDを値として指定します。指定を省略した場合,メタ情報の追加コマンド(EDMAddMeta)を実行するときに,-gオプションを必ず指定してください。
    ここでは,記述を省略しています。
<サブクラスにプロパティを追加するためのアクションの説明>
ここでは,[AddProperty/クラス名]のエントリとして追加するプロパティを記述します。
[AddProperty/クラス名]
全文検索機能付き文字列型プロパティを追加する場合,「クラス名」にはプロパティを追加するクラス名を指定します。
ここでは,「usrClass_PropTextSearch」を指定しています。
<サブクラスにプロパティを追加するためのプロパティの説明>
ほかのクラスに同じプロパティが定義されていない場合,次のプロパティは[AddProperty/クラス名]に指定してください。これらのプロパティは,[AssumeProperty/DMA_DATATYPE_STRING]には指定できません。
  • dmaProp_DisplayName
    追加するプロパティ名を値として指定します。なお,この値の指定は省略できません。
  • dmaProp_DescriptiveTextプロパティ
    追加するプロパティを簡単に説明する文字列を値として指定します。指定を省略した場合,dmaProp_DisplayNameプロパティに指定したプロパティ名が仮定されます。
    ここでは,記述を省略しています。
  • dmaProp_Idsプロパティ
    追加するプロパティに付与するGUIDを値として指定します。指定を省略した場合,メタ情報の追加コマンド(EDMAddMeta)を実行するときに,-gオプションを必ず指定してください。
    ここでは,記述を省略しています。
  • dmaProp_DataTypeプロパティ
    追加するプロパティのデータ型を示す文字列を値として指定します。全文検索機能付き文字列型プロパティを追加する場合は,必ず「DMA_DATATYPE_STRING」を指定します。この指定は省略できません。
  • edmProp_SearchExtentionプロパティ
    全文検索機能付き文字列型プロパティを追加する場合に指定します。全文検索機能付き文字列型プロパティを追加する場合は,必ず「FreeWordIndex」を指定します。この指定は省略できません。