Fessの15.10向け開発ブランチに、Apache Tika 4.1.0への移行がマージされました。文書から本文やメタデータを取り出す仕組みの更新に伴い、独自の抽出設定やOCR設定を使っている環境では、移行前の確認が必要です。
tika.xmlの設定を引き継げない
15.10向けの実装では、Tikaのパーサーをコードで構築し、tika.xmlを読み込みません。配布構成からもこのファイルを取り除いています。従来のファイルが設定ディレクトリに残っていると、起動時にfess.logへ警告を出します。
特に、parser-excludeで特定のパーサーを除外していた環境は確認が必要です。ファイルを残しても除外設定は効かず、従来止めていたパーサーが動く可能性があります。既存の設定を控え、移行後に同じ運用条件を満たせるか検証してから、不要になったファイルを整理してください。
従来の主な配置場所はZIP版のapp/WEB-INF/conf/tika.xml、RPM/DEB版の/etc/fess/tika.xmlです。既存の正式版を運用している段階で、この説明だけを根拠に削除する必要はありません。
Docker側の対応はfess/snapshotとfess/snapshot-slimで、削除されるファイルを/etc/fessへ移動しようとしてビルドが失敗することを防ぎます。リリース済み15.x用Dockerfileは今回の修正対象に含まれません。
OCRの秒とミリ秒を区別する
Fess全体のOCR設定は次の初期値を維持します。
crawler.document.ocr.enabled=false
crawler.document.ocr.language=eng
crawler.document.ocr.timeout=120
OCRは初期状態で無効、言語は英語、タイムアウトは120秒です。有効にする場合は、クローラープロセスの環境にTesseract本体と必要な言語データを用意します。tesseractと、利用する場合のImageMagickは、そのプロセスのPATHから見つかる必要があります。
一方、クロール設定のconfig.tika.tesseract.configで指定するTesseract用プロパティファイルでは、タイムアウトのキーがtimeoutMillisになり、単位はミリ秒です。たとえば300秒なら次のように記述します。
language=jpn
timeoutMillis=300000
旧キーtimeoutSecondsは値を1000倍して互換変換し、fess-crawler.logへ警告を出します。両方ある場合はtimeoutMillisが優先されます。Fess全体のcrawler.document.ocr.timeoutは引き続き秒なので、単位を混同しないようにします。クロール設定ごとのファイルは全体設定より優先されます。
tesseractPath、tessdataPath、imageMagickPathをこのファイルに書いても効果がありません。また、config.tika.pdf.configで指定するPDF用ファイルでは、ocrStrategyやocrDPI、ocrImageTypeなど、Tika 4で削除されたプロパティは警告付きで無視されます。適用できない指定を残したままにせず、ログを確認してください。PDF設定のextractIncrementalUpdateInfoはFess側で初期値をfalseにしています。
既存のPDFBoxによる本文抽出からTikaへの引き継ぎ条件を含め、代表的なスキャンPDFと文字入りPDFで再確認してください。PRのOCR検証は仮のtesseractによるもので、実際のTesseractによる文字認識品質や所要時間までは確認されていません。
メタデータ名と抽出結果を確認する
Tika 4では多くのメタデータ名が変わります。互換フィルターが対応する名前はTika 3の名前へ戻しますが、すべての名前を戻すわけではありません。たとえばExcelのprotectedはmsoffice:excel:protected-worksheetになります。crawler.metadata.name.mappingやスクリプトで使うキーは、実際の抽出結果と照合してください。
Tika内部用のtk:、X-TIKA:、zip:で始まるメタデータは、文書へ渡す前に除去します。これらをマッピングやスクリプトで取得することはできません。crawler.metadata.content.excludesの新しい初期値は次のとおりです。
crawler.metadata.content.excludes=resourceName,X-Parsed-By,Content-Encoding.*,Content-Type.*,X-TIKA.*,tk:.*,X-FESS.*
古い設定ファイルにtk:.*がなくても内部情報を本文に混ぜない処理があります。一方、それ以外の新しいメタデータは除外条件に一致しなければ本文へ追加されるため、独自の除外条件も見直します。
文字コードの報告名も、Shift_JISがwindows-31j、EUC-JPがx-eucJP-Openになるなどの違いがあります。ローカルファイルのContent-Lengthが実サイズになる点や、Markdownの解析も含め、既存文書で検索内容や連携処理に影響がないか確認するとよいでしょう。
移行前に用意するもの
独自のtika.xml、Tesseract/PDF用プロパティファイル、メタデータのマッピング設定を控え、代表的な文書の抽出結果を比較できるようにしておきます。対応版へ切り替えた検証環境では、設定警告、本文、メタデータ、OCR処理を確認します。既存インデックスの本文は自動で書き換わらないため、必要な文書は本文抽出が再実行される形でクロールしてください。
fess-crawlerの抽出クラスを利用する独自プラグインでは、TikaExtractor.setTikaConfigの削除やExtractDataのインターフェース変更もあるため、15.10向けの再ビルドと互換性確認が必要です。