クロールとアーカイブ・ファイル

アーカイブ拡張機能はデフォルトで無効になっています。この機能を有効にするには、クロール構成ファイルでexpandArchivestrueに設定する必要があります。

アーカイブ拡張機能では、アーカイブ・エントリごとにEndecaレコードが作成され、そのプロパティが移入されます。ドキュメント変換オプションが有効な場合、テキストが抽出されます。ファイルシステム・クロールの場合、オプションが有効であっても、アーカイブ・エントリに対してネイティブ・ファイル・プロパティは収集されないことに注意してください。

アーカイブ・ファイルのサポート

アーカイブ・ファイルは、その中に1つ以上のアーカイブ・エントリ(ファイルまたはディレクトリ)が含まれるファイルです。アーカイブの例として、ZIPファイルとUNIX TARファイルの2つがあります。

IAS識別子は、ファイルシステム・クロールの場合はファイル拡張子でアーカイブを識別します。ファイルシステム・クロールでは、次のアーカイブ・タイプがサポートされます。
  • JARファイル(拡張子.jar)
  • TARファイル(拡張子.tar)
  • GZIP圧縮Tarファイル(拡張子.tar.gzおよび.tgz)
  • ZIPファイル(拡張子.zip)

ZIPファイルのサポート

ZIPファイルは次のようにサポートされます。
  • ZIPファイルのアルゴリズムは、非圧縮または標準デフレート圧縮のいずれかになります。デフレート・アルゴリズム以外の圧縮スキームを使用するZIPファイルは、ZIPファイルとして扱われません。この場合、Endeca.File.IsArchiveプロパティがfalseに設定された状態で、1つのレコードがファイルに作成されます。
  • パスワード保護エントリを含むZIPファイルはサポートされません。パスワード保護エントリを含むZIPファイルは、完全に処理されません。実際の動作は、パスワード保護の形式によって異なります。
    • パスワード暗号化にAES-128またはAES-256の形式を使用する場合、ファイルはZIPファイルとしてマークされません。Endeca.File.IsArchiveプロパティがfalseに設定された状態で、1つのレコードがファイルに作成されます。
    • ZipCryptoパスワード保護を使用する場合、ZIPは認識されます。パスワードで保護されていないエントリが順番に検出され、エントリごとにレコードが作成されます。パスワード保護エントリに遭遇すると、ZIPの処理は停止し、レコードはそれ以上作成されません。
    • ZIPユーティリティが多数ある場合、ディレクトリ・エントリはパスワードで保護されず(そのため、ファイルのみが暗号化される)、そのディレクトリ・エントリはZIPの先頭に置かれることが多くなります。Endeca.File.IsArchiveプロパティがtrueに設定された状態で、1つのレコードがファイルに作成され、暗号化されていないもの(ディレクトリ)に追加のレコードが作成されます。
  • 複数のZIPファイルに分割されるエントリはサポートされません。複数のZIPファイルにファイルを分割すると、2種類のZIPファイル(基本ファイルの一部のデータを格納するファイルと、エントリ情報も格納する「最後」のファイル)が作成されます。様々なツールで異なる命名規則を使用するため、場合によっては、.zip拡張子が付いているファイルと付いていないファイルがあります。ただし、最後のファイルは.zipファイルになります。これらのファイルは次のように処理されます。
    • 一部のファイルは、ZIPファイルとして認識されません。Endeca.File.IsArchiveプロパティがfalseに設定された状態で、1つのレコードがファイルに作成されます。
    • 最後のファイルはZIPファイルとして認識されますが、そのエントリの読取りはできません。Endeca.File.IsArchiveプロパティがtrueに設定された状態で、1つのレコードがファイルに作成されます。

なんらかの理由でZipファイルが有効なZIPファイルとして扱われない場合、ログ・ファイルには、該当のZIPファイルに「無効なCENヘッダー」があることを示す警告が含まれ、そのZIPファイルに生成されたレコードでは、それがアーカイブであることが示されません。

注意: JARファイルは、ZIPファイルと同様に処理されます。そのため、ZIPファイルに適用される警告は、同様にJARファイルにも適用されます。

Tarファイルのサポート

サポートされるTar形式は次のとおりです。
  • GNU Tar 1.13
  • GNU Tar 1.12以下
  • UNIX V7
  • POSIX.1-1988(元のUSTAR形式)
  • GZipで圧縮される前述のいずれかの形式
前述されていない形式は、非サポート形式と見なされます。たとえば、POSIX.1-2001形式は明示的にサポートされていません。
IAS Serverは、Tarファイルを次のように処理します。
  • サポートされる形式の場合、Tarファイルの各エントリが抽出され、レコードとして書き込まれます。
  • POSIX.1-2001 Tarの場合、エントリは抽出されず、形式がサポートされないことを示すメッセージがログに書き込まれます。
  • Tarエントリが破損している場合:
    • 最初のエントリが破損している場合、Tar全体が抽出されません。かわりに、その他の非アーカイブ・ファイルとして扱われます。
    • 以降のいずれかのエントリが破損している場合、不正なエントリの発生のログが記録されます。それより前のエントリはすべて抽出され、レコードとして出力ファイルに書き込まれます。

アーカイブ・ファイルの処理方法

次に、IAS Serverがアーカイブ・ファイルを処理する方法を詳しく見ていきます。
  • Endecaレコードは、アーカイブ・ファイル自体に対して作成されます。このレコードのEndeca.File.IsArchiveプロパティはtrueに設定されています。
  • 最上位ドキュメント(ファイルまたはディレクトリ)以外に、ネストされたアーカイブ・ファイルも処理されます。
  • ドキュメント変換(有効な場合)は、ドキュメント変換フィルタ処理に従って、アーカイブ内の全ファイルで実行されます。
  • アーカイブにあるドキュメントごとに(ネストされたアーカイブを含む)、個別のEndecaレコードが作成されます。レコードは次のように処理されます。
    • レコードのEndeca.File.IsInArchiveプロパティはtrueに設定されています。また、Endeca.File.SourceArchiveプロパティとEndeca.File.PathWithinSourceArchiveプロパティは、親アーカイブの参照とともに追加されます。
    • アーカイブされたファイルやディレクトリ(つまり、アーカイブ内のファイルとディレクトリ)の場合、フィルタ処理の動作は、アーカイブされていないファイルやディレクトリと同様に機能します。
    • ファイルシステム・クロールのレコードの場合、レコードIDは、Endeca.File.SourceArchiveIdプロパティとEndeca.File.PathWithinSourceArchiveプロパティの連結になります。
    • ファイルシステム・レコードの場合、Endeca.FileSystem.PathプロパティがレコードIDになります。このプロパティは、アーカイブ内のファイルを指定する正規文字列で、次の形式に従います。
      /path/to/archive//path/to/archivedfile
    注意:
    • 二重のデリミタは、アーカイブの境界を表します。
    • PathWithinSourceArchiveプロパティの値のパス・デリミタは、フォワード・スラッシュ(プラットフォームに依存しない)で表示されます。
    • Endeca.FileSystem.Pathプロパティの値のパス・デリミタはプラットフォームに依存するため、Windowsファイルの場合、このプロパティのパス・デリミタはバックスラッシュで表示されます。次に例を示します。
      C:\path\to\archive\\path\to\archivedfile
    ネストされたアーカイブの場合、Endeca.File.PathWithinSourceArchiveプロパティの形式は次のようになります。
    //path/to/nested/archive//path/within/nested/archive
  • アーカイブされたエントリのプロパティはEndecaレコードで取得されますが、エントリ自体はアーカイブから物理的に抽出されません(つまり、新しいファイルが永続的にディスクに保存されることはありません)。
  • アーカイブに同じ名前のエントリがある場合、処理される最初のエントリが保持され(そのエントリにEndecaレコードが作成される)、重複するエントリは無視されます。
  • シードは、実際のファイル、ディレクトリまたはエントリに制限されます。つまり、シードには、アーカイブされたファイルやディレクトリを指定できません。

前述の動作は、クロールされたすべてのアーカイブのデフォルトです。アーカイブの処理を回避するには、クロールのExpand archivesオプションを無効にします。