Hitachi

HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 10


2.5.2 SGML定義情報の作成

Text Search Plug-inシステムで文書検索プラグインの環境を構築するには,文書検索プラグインが使用する表のSGMLTEXT型の列の作成に必要な情報を定義するファイルを作成します。必要な情報とは,SGMLテキストデータの構造と文書要素を表すタグ名称などを定義するDTD,検索に不要なタグや文書要素の削除,参照タグと外字コードの対応を定義する正規化パラメタのことです。これらの情報をまとめて,SGML定義情報といいます。

ファイルは,テキストエディタなどを使用して作成します。作成する列の種別によって必要なファイルは異なります。作成する列の種別ごとに必要となるファイルを次の表に示します。

表2‒4 文書検索プラグインのSGML定義情報の作成に必要なファイル

必要なファイル名

列種別

構造なし文書用の列

構造化文書用の列

DTDファイル

×

正規化パラメタファイル

×

(凡例)

○:必要

×:不要

△:任意

注意事項
〈この項の構成〉

(1) DTDファイル

DTDファイルとは,構造化文書用の列に対して,登録する文書の構造を定義するためのファイルです。一つの列に一つのDTDファイルを作成します。DTDファイルはテキストエディタなどで作成します。なお,構造なし文書用の列を作成する場合,このファイルを作成する必要はありません。

Text Search Plug-inでは,一つの列に対して一つのDTDを対応付けます。通常,SGML文書にはDTDが含まれています。しかし,Text Search Plug-inで管理する列には,DTDは文書と切り離して入力します。これによって,DTDの異なる文書の登録を避けられます。列でのDTDとSGML文書の分割について,次の図に示します。

図2‒3 DTDとSGML文書の分割

[図データ]

なお,列にDTDファイルが登録されていれば,SGML文書にDTDが含まれていても問題はありません。ただし,SGML文書に含まれているDTDの内容が,列に登録されているDTDの内容と矛盾している場合は,エラーになります。

(a) Text Search Plug-inでのSGML文書の制限

Text Search Plug-inではSGMLに関して次の制限があります。DTDを決定する場合は,これらの制限に注意してください。

  • SGML宣言指定は不要です。SGML宣言が指定されていても,内容は無効です。

  • DOCTYPEは最上位構造名になります。

  • 一つの列には同じDOCTYPEを持つ文書を登録してください。

  • 公開識別子(PUBLIC)は指定できません。

  • システム識別子(SYSTEM)にはDTD名称を指定してください。

  • 外部エンティティは扱えません。

  • 登録するSGML文書は,次に示す文字コードで作成してください。

  • SGML文書中の一つのタグに対するネストレベルは100までです。

(b) SGML文書中の改行コードの変換方法

SGML文書中の改行コードの変換方法を次の表に示します。

表2‒5 SGML文書中の改行コードの変換方法

改行コードの前の文字

改行コードの後ろの文字

変換方法

1バイト文字

1バイト文字

改行コードをスペースに置換

1バイト文字以外の文字

改行コードを削除

1バイト文字以外の文字

1バイト文字

1バイト文字以外の文字

そのほかの改行コードの変換規則は次のとおりです。

  • 文書(CDATA)の始めおよび終わりの改行コードは削除します。

  • 改行コードだけの文字列は,一つの半角スペースに置き換えます。

  • 改行コードが連続する場合は,一つの改行コードとして扱います。

(2) 正規化パラメタファイル

正規化パラメタファイルには,SGML文書中のタグを制御するパラメタを記述します。正規化パラメタファイルはテキストエディタなどで作成します。なお,SGML文書中のタグの制御が必要ない場合,このファイルを作成する必要はありません。

正規化パラメタファイルは,DTD単位に作成します。つまり,構造化文書用の列に対して一つ作成します。

(a) 正規化パラメタファイルの構成内容

正規化パラメタファイルは,正規化パラメタと特定文字データ変換マップで構成されます。

正規化パラメタ
  • 接続対象要素リスト

    要素型名のリストです。非構造要素のうち,前後にある文字データを接続する要素を指定します。ソース上では,指定した開始タグと対応する終了タグを削除する指定です。

  • 削除対象要素リスト

    要素型名のリストです。非構造要素のうち,内部にある下位要素や文字データを含めて,削除する要素を指定します。ソース上では,指定したタグ,構造内に含まれるタグおよび内容(文字データ)をすべて削除する指定です。

特定文字データ変換マップ

ある特定の文字データを,共通的な文字コードへ変換するための指定です。SGMLの構文上,テキスト中に直接記述できない文字(例えば"<"など)や外字などの変換方法もこのマップに含めます。

(b) 正規化パラメタファイルの記述形式

正規化パラメタの指定方法

正規化パラメタは,要素型名に対して実行するオペランドを指定します。

記述形式

[ELEMENT△LIST]<改行>

"要素型名"△{CONN|DELT}<改行>

オペランド

CONN:接続対象要素リスト

DELT:削除対象要素リスト

注意事項
  • テキスト形式で作成してください。

  • 要素型名は重複して指定できません。

  • <改行>は改行コードを表しています。

特定文字データ変換マップの指定方法

特定文字データ変換マップは次の形式で記述します。

記述形式

[CHANGE△CHARACTER△LIST]<改行>

共通的な文字コードへ変換するSGML文書中の文字データ△変換する文字<改行>

注意事項
  • 共通的な文字コードへ変換する特定の文字データは,DTDファイルに特定文字の実体を示すキーワードとして,"SDATA"で宣言されている必要があります。

  • SDATAは文字コードを定義していませんので,全文検索を実行するために文字コードを定義する必要があります。

  • テキスト形式で作成してください。

  • SGML文書中の値と変換する文字は1行で記述してください。

  • 変換する文字に,改行コード(0x0a)は指定できません。

  • <改行>は改行コードを表しています。

(c) 正規化パラメタファイルの記述例

正規化パラメタファイルの記述例を次の図に示します。

図2‒4 正規化パラメタファイルの記述例

[図データ]

(3) SGML文書の正規化の例

SGML文書の正規化の例を次の図に示します。

図2‒5 SGML文書の正規化の例

[図データ]