4.4.3 全文検索インデクスの作成
(1) 全文検索インデクスの作成時点
全文検索インデクスは,次のどちらかの時点で作成,登録できます。それぞれの特長について説明します。
- 文書の登録と同時に全文検索インデクスを作成・登録する
個々の文書の登録ごとに全文検索インデクスを作成します。大量の文書を登録するときにこの方法を利用すると,まとめて作成する場合に比べて処理時間がかかりますが,登録と同時に全文検索が実行できます。
また,新規に作成した文書の全文検索インデクスを,全文検索対象文書全体の全文検索インデクスとは別に,一時的なインデクスとして作成する方法もあります。ここで作成したインデクスを差分インデクスといい,差分インデクスを作成する機能を差分インデクス作成機能といいます。
差分インデクス作成機能を使用すると,全文検索インデクスの追加登録が高速に処理できます。ただし,個々の検索処理は差分インデクスを使用しない場合に比べて若干遅くなります。また,差分インデクスは,容量が増えた段階で,まとめて全体のインデクスに反映させる必要があります。
なお,マルチファイル管理機能を使用している場合は,文書の登録と同時に全文検索インデクスは作成できません。
- 文書の登録時には全文検索インデクスを作成しないで,あとで複数の文書の全文検索インデクスをまとめて作成・登録する(全文検索インデクスの遅延一括作成)
個々の文書作成時には全文検索インデクスを作成しないで,あとで大量の文書の全文検索インデクスをまとめて作成する方法です。これを,全文検索インデクスの遅延一括作成といいます。この機能を使用すると,文書ごとに全文検索インデクスを作成する場合に比べて,処理時間を短縮できます。ただし,文書登録と同時に全文検索を実行することはできません。
差分インデクスの作成には,HiRDB Text Search Plug-inの差分インデクス作成機能を使用します。差分インデクス作成機能を使用する場合は,インデクス情報ファイルに差分インデクス作成を定義する必要があります。インデクス情報ファイルの定義については,マニュアル「DocumentBroker Version 3 システム導入・運用ガイド」を参照してください。差分インデクス作成機能の詳細については,マニュアル「HiRDB Text Search Plug-in」を参照してください。また,全文検索インデクスの遅延一括作成には,HiRDBのプラグインインデクスの遅延一括作成機能を使用します。全文検索インデクスを遅延一括作成する場合の環境設定および運用方法については,マニュアル「HiRDB システム運用ガイド」の,プラグインインデクスの遅延一括作成機能についての説明を参照してください。
(2) レンディションタイプと全文検索インデクスの作成方法との対応
DocumentBrokerでは,全文検索インデクスを持つすべての形式の文書に対して全文検索を実行できます。ただし,全文検索インデクスは,レンディションタイプで表される形式によって,作成方法が異なります。
レンディションタイプごとの全文検索インデクスの作成方法について説明します。
なお,バージョンなし文書およびバージョン付き文書の全文検索インデクスを作成する場合に,文書がマルチレンディション文書である場合には,マスタレンディションのレンディションタイプが対象になります。
- 特定のレンディションタイプを持つテキストファイルの全文検索インデクスの作成
特定のレンディションタイプとは,次のレンディションタイプです。
- 先頭が「MIME::text/」で始まるレンディションタイプ
例えば,「MIME::text/plain」や「MIME::text/sgml」などです。
- MIME::application/x-edm-sgml
これらのレンディションタイプを持つ文書は,文書の登録時に,登録した文書のコンテントから自動的に全文検索インデクスが作成できます。また,文書登録後に登録されている文書のコンテントから全文検索インデクスを作成したり,文書のコンテント以外のファイルから作成した全文検索インデクスと関連づけたりすることもできます。
- 特定のレンディションタイプを持たない文書の全文検索インデクスの作成
前に示したレンディションタイプ以外の形式を持つ文書です。ビットマップなどのイメージデータや,Wordなどのアプリケーションプログラムで作成した文書などが該当します。
これらの文書は登録した文書のコンテントから全文検索インデクスを作成できません。この場合は,別に作成した全文検索インデクス作成用のテキストデータから,明示的に全文検索インデクスを作成して,登録した文書と関連づける必要があります。
なお,文書のコンテントから全文検索インデクスを作成した場合,レンディションタイプによって,可能な検索形式が異なります。レンディションタイプと,登録した文書のコンテントから作成した全文検索インデクスで可能な検索形式について,次の表に示します。
表4-4 全文検索文書として登録されるレンディションタイプと検索形式
レンディションタイプ | 検索形式 |
---|
「MIME::text/」で始まるレンディションタイプ | プレーンテキストの全文検索※ |
MIME::application/x-edm-sgml | プレーンテキストの全文検索 構造指定検索 |
- 注※
- ただし,XMLインデクスデータ作成機能を使用してインデクスデータを作成,登録したXML文書に対しては,構造指定検索も実行できます。
(3) 全文検索インデクスの作成方法
ここでは,作成する時期およびレンディションタイプごとの作成方法を考慮した,全文検索インデクスの作成方法について説明します。作成方法には,作成時期および文書のレンディションタイプに応じて,次の3通りの作成方法があります。
- 文書を登録する時に,全文検索インデクスも同時に作成する方法
特定のレンディションタイプを持つ文書に対して,文書の作成と同時に全文検索インデクスを作成する方法です。ただし,この方法は,マルチファイル管理機能を使用しているバージョンなし文書およびバージョン付き文書では使用できません。
- 文書を登録する時には全文検索インデクスを作成しないで,全文検索インデクスだけあとから作成する方法
特定のレンディションタイプを持つ文書に対して,文書を作成したあとで全文検索インデクスだけ別に作成する方法です。マルチレンディション文書の場合は,特定のレンディションタイプをマスタレンディションのレンディションタイプとして持つ文書が対象になります。なお,オブジェクトのレンディションタイプは,必要に応じて登録後に変更できます。ただし,この方法は,マルチファイル管理機能を使用しているバージョンなし文書およびバージョン付き文書では使用できません。
- アプリケーションプログラムで作成した形式の文書に対応する全文検索インデクスを,文書とは別に作成して登録する方法
特定のレンディションタイプを持たない文書に対して,文書とは別に作成した全文検索インデクスを関連づける方法です。
次の図に,それぞれの方法の概要を示します。
図4-1 全文検索インデクスの作成方法
![[図データ]](figure/zu040100.gif)
それぞれの方法について説明します。
- 文書を登録する時に,全文検索インデクスも同時に作成する方法
文書を作成,登録する時に,CreateObjectメソッドの引数にDBR_CREATE_INDEXを指定する方法です。
なお,この場合,次の条件に合致する必要があります。
- 構成要素になるDMAオブジェクトを指定する引数に,全文検索機能付き文書クラスのクラス識別子を指定している
- レンディションタイプが表4-4に示した形式である
なお,UpdateContentメソッドなどによって文書を更新する場合にも,同じように引数を指定することで,同時に全文検索インデクスが作成できます。
- 文書を登録する時には全文検索インデクスを作成しないで,全文検索インデクスだけあとから作成する方法
文書を作成,登録する時に,CreateObjectメソッドの引数にDBR_NOT_CREATE_INDEXを指定する方法です。このとき,全文検索インデクスは作成されません。登録済みの文書に対して,全文検索インデクスを作成するCreateIndexメソッドをコールします。
この方法を使用して,プラグインインデクスの遅延一括作成機能によって,全文検索インデクスをバッチ処理で作成することができます。
なお,この場合,全文検索インデクスを作成する文書は,構成要素のDMAオブジェクトが全文検索機能付き文書クラスのオブジェクトであり,かつレンディションタイプが表4-4の形式として登録されている必要があります。または,文書を登録するまたは更新する時点で表4-4の形式に変更することが必要です。
登録の手順を示します。
- CreateObjectメソッドによって,文書を作成,登録します。文書を更新する場合は,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドによって,文書を更新します。
- 1.で登録した文書に対して,CreateIndexメソッドを使用して全文検索インデクスを作成します。
- アプリケーションプログラムで作成した形式の文書に対応する全文検索インデクスを,文書とは別に作成して登録する方法
表4-4で示したレンディションタイプ以外の形式を持つ文書に対して,全文検索インデクスを作成したい場合に使用する方法です。アプリケーションプログラムで作成した文書に全文検索インデクスを付けたい場合に使用します。
Wordで作成した文書など,表4-4で示したレンディションタイプ以外の形式を持つファイルを文書として作成,登録した場合,引数にどの値を指定しても,全文検索インデクスは作成されません。この文書を全文検索の対象にしたい場合は,全文検索インデクスの作成対象とする文書(プレーンテキスト)を別に作成して,登録する必要があります。この場合は,ユーザプログラムによって,Wordなどのアプリケーションプログラムで作成した文書からテキストデータを抽出してください。
DocumentBrokerでは,すでに登録されている全文検索インデクスを持たない文書に対して,クライアント環境で作成した全文検索可能なデータを関連づけることができます。また,すでに全文検索インデクスを持つ文書に対して,異なる内容のファイルを利用して,全文検索インデクスを更新することもできます。
登録の手順を示します。ここでは,Wordで作成した文書を「文書B.doc」,これに対応する全文検索インデクスの作成対象とする文書を「文書B'.txt」とします。
- Wordで作成した形式の文書「文書B.doc」と,この文書に対応する全文検索可能なレンディションタイプの文書「文書B'.txt」を作成します。
この処理は,ユーザプログラムで行ってください。
- 「文書B.doc」をCreateObjectメソッドまたはUpdateContentメソッドなどでDocumentBrokerの文書として作成,登録します。
- 手順2.で登録した文書に接続して,CreateIndexメソッドをコールします。このとき,引数のファイルパスにfile:プロトコルを使用した「文書B'.txt」のファイルパスを指定します。
これによって,「文書B'.txt」の内容を基に全文検索インデクスが作成され,「文書B.doc」の全文検索インデクスとして登録されます。
- 注意事項
- DocumentBrokerでは,CreateIndexメソッドで登録するファイルの内容とすでに登録されている文書の実体との対応は管理しません。CreateIndexメソッドの引数に指定したファイルの内容と登録されている文書の内容の対応については,ユーザプログラムで管理してください。