この問題に関連する解決策をいくつか見つけました。説明するように、関連するソリューションは私には機能しません。(私はSolr 4.0を使用しており、Oracle 11gデータベースに格納されているデータにインデックスを付けています。)
Jonck van der Kogelの関連ソリューション(2009年から)については、ここで説明します。彼は、Solrに同梱されているClobTransformerのようなカスタムTransformerの作成について説明しています。これはエレガントな道を進んでいますが、現在Solrと統合されているTikaを使用していません。(彼は外部のPDFBoxとFontBoxを使用しています。)これにより、複数のメンテナンス/アップグレードの依存関係が作成されます。また、PDFに加えてWord文書のインデックスを作成できる必要があります。
Kogelのソリューションは正しい方向に進んでいるようですが、Solrに含まれているTikaクラスをカスタムTransformerで使用する方法はありますか?これにより、KogelのエレガントなデータベースソリューションですべてのTika機能が可能になります。
別の関連するソリューションは、Solrに同梱されているExtractingRequestHandler (ERH)です。ただし、名前が示すように、これはリッチテキストドキュメントのHTTP投稿を処理するなどのリクエストハンドラです。この方法でデータベースからドキュメントを抽出するには、パフォーマンスとセキュリティの問題があります。データベースのBLOBにHTTP経由でアクセスできるようにする必要があります。データベースBLOBからの直接取り込みにERHを使用することについての議論は見つかりませんでした。Solr Cellを使用してデータベースBLOBから直接取り込むことは可能ですか?
別の関連する解決策は、byte []を文字列に変換するためのTransformer(上記のKogelのような)を作成することです(DataImportHandler FAQから)。真のバイナリドキュメントでは、これはジャンクをインデックスにフィードし、Tikaのようにテキスト要素を適切に抽出しません。動作しません。
最後の関連ソリューションは、RichDocumentHandlerによって提供されるUpdateRichDocumentsです。これは非推奨であり、Solrでは使用できなくなりました。このページでは、ExtractingRequestHandler(上記で説明)を参照しています。
正しい解決策は、DataImportHandlerとTikaクラスを使用するカスタマーTransformerを使用することのようです。これはどのように作動しますか?