インデックスの構造は、インデックス定義ファイルに記述します。インデックス定義ファイルは、収集文書リストファイルとマップファイルとともに、インデックス管理コマンド(isuindexコマンド)の入力情報となります。
インデックス定義ファイルには、フィールド名、検索フィールド属性、回答フィールド属性とオプションを指定します。以下にインデックス定義ファイルの記述形式を示します。
フィールド名 検索フィールド属性 回答フィールド属性 オプション ・ ・ |
備考.各項目の値は、1つ以上の空白またはタブにより区切りを指定します。
各項目の概略について説明します。
検索フィールド属性
検索対象とするフィールドに対して、インデックス作成時の検索フィールド属性を定義します。当フィールドにAccela BizSearchが規定する検索種別を指定すると、該当フィールドに対するインデックスが作成され、フィールド名で情報を検索できます。当フィールドを省略した場合、該当フィールドに対するインデックスは作成されません。このため該当フィールド名での情報の検索はできませんが、ほかの検索可能なフィールド名での検索結果に付随する情報として、フィールドのデータを取得することができます。
回答フィールド属性
回答を返却対象とするフィールドに対して、インデックス作成時に回答用文書情報へ設定する内容を指定します。
参照
インデックス定義ファイルの各項目の詳細は、“Accela BizSearch プログラマーズガイド”を参照してください。
以下の図にインデックス定義ファイルの記述例を示します。
図2.8 インデックス定義ファイルの記述例
(1)フィールド名 データベースから抽出したデータの名前。 検索条件指定時は、この名前を指定する。→ @contents *検索条件の指定例 @contents:=富士通
(2)検索フィールド属性 インデックス作成時の検索フィールド属性(インデックスの種別を指定)。 種別には、“JAPANESE/SIMPLE/NUM/NUM-U”があり、 “-”の場合、インデックスは作成されない。
(3)回答フィールド属性 検索結果として返却されるデータの型を指定。 “string(40)”の場合、39バイト分の文字が返却される。
(4) オプション “id”を指定されたフィールド名のデータを使用してインデックス に登録されたデータをユニークに管理する。ここでは、フィールド 名「ROWID」が対応する。
インデックス定義ファイルには、インデックス対象のデータベースの表の列に対応したフィールドを規定します。ただし、インデックスに登録したデータをユニークに管理する情報としてフィールド名「ROWID」を指定する必要があります。
また、Textアダプタ定義で、MappingDefタグのdbinfo属性に'yes'を指定するか、または、dbinfo属性を省略した場合は、以下に示すフィールド名を指定する必要があります。CONTAINS関数を使用する検索アプリケーションのみを動作させる場合は、データベース名、スキーマ名および表名がすでに分かっているため、dbinfo属性に'no'を指定することができます。
database
インデックス対象の表が存在しているデータベース名を設定するためのフィールドです。抽出定義で定義したデータベース名が格納されます。以下のように定義してください。
項目 | 属性 |
---|---|
フィールド名 | database |
検索フィールド属性 | - |
回答フィールド属性 | string(N+1) (Nはデータベース名が格納できるバイト長を指定) |
オプション | - |
‐:指定なし
schema
インデックス対象の表が属するスキーマ名を設定するためのフィールドです。抽出定義で定義されたスキーマ名が格納されます。以下のように定義してください。
項目 | 属性 |
---|---|
フィールド名 | schema |
検索フィールド属性 | - |
回答フィールド属性 | string(N+1) (Nはスキーマ名が格納できるバイト長を指定) |
オプション | - |
‐:指定なし
table
インデックス対象の表名を設定するためのフィールドです。抽出定義で定義された表名が格納されます。以下のように定義してください。
項目 | 属性 |
---|---|
フィールド名 | table |
検索フィールド属性 | - |
回答フィールド属性 | string(N+1) (Nは表名が格納できるバイト長を指定) |
オプション | - |
‐:指定なし
ROWID
インデックス内での文書の識別子に使用します。以下のように定義してください。
項目 | 属性 |
---|---|
フィールド名 | ROWID |
検索フィールド属性 | - |
回答フィールド属性 | string(49)/noCut |
オプション | id |
‐:指定なし
Textアダプタでは、データベースのROW_ID(フィールド名:ROWID)を使用して、データベースに格納されたデータとインデックスに定義するデータとの対応関係をとります。ここで、データベースを再編成した場合、データベース内のROW_IDが変更されるため、インデックスに定義したデータとの対応関係を維持することができなくなります。
このため、データベースを再編成した場合は、インデックスを再作成する必要があります。
Textアダプタで、インデックス定義ファイルを作成する場合の注意事項について説明します。
利用者が規定するフィールド名は、Textアダプタ定義のマッピングルール規定部に記述するColumnタグの内容と、一致していなければなりません。
Textアダプタ定義で、MappingDefタグのdbinfo属性に'yes'またはdbinfo属性を省略した場合は、必ず指定フィールド名「database」、「schema」、「table」を指定してください。dbinfo属性に'no'を指定した場合は、これらのフィールドは指定する必要はありません。dbinfo属性に'no'を指定した場合、インデックスには該当のフィールドが作成されませんので、Accela BizSearchのアプリケーションで、データベース名、スキーマ名、表名の情報を得ることはできませんが、インデックスの容量を節約することができます。CONTAINS関数だけで全文検索する場合は、これらの情報は不要ですので、インデックス定義ファイルにフィールド名「database」、「schema」、「table」を指定する必要はありません。
フィールド名「ROWID」は、必ず指定してください。また、検索結果からデータベースの行を特定する場合、一意性制約(PRIMARY KEY)の付いた列に、対応するフィールド名を設定してください。
回答フィールドの長さの最大値は合計で1024バイトです。