MarkLogic Data Hub バイナリデータの取り込みについて
Posted by Koichi Noda on 20 May 2020 09:41 PM |
||||
MarkLogic Data Hub バイナリデータの取り込みについて※本記事の内容は、Data Hub v5.2.1を前提としています。 今回のエントリでは、MarkLogic Data HubにおけるIngestion Step(読み込みステップ)を用いて、PDFなどのバイナリデータを読み込む場合の注意点および、バイナリデータに対する検索を実現するための方法について説明します。 ・Data Hub QuickStart チュートリアル ・MarkLogic Data Hubドキュメンテーション バイナリデータの取り込みIngestion Stepの設定項目であるSource Format, Target Format をBinaryに変更することによって、画像やPDF、オフィス文書などのバイナリデータについても、MarkLogicにそのまま取り込むことが可能です。 本エントリでは、下記のMarkLogic インストレーションガイド(日本語版)のPDFファイルをサンプルデータとして利用しますので、手順を実施したい方はデータハブのプロジェクトからファイルを参照できるようにしておいてください。 はじめに新規のフローを作成します。作成したフローに、Ingest Stepを1つ追加します。 Ingest Stepに対する設定項目の中で、上記のサンプルPDFファイルを含んだディレクトリをSource Directory Pathに指定します。 設定完了後、”RUN”ボタンをクリックして、フローを実行します。ステータスが、Finished に変化したことを確認します。 読み込み後のバイナリデータの確認Browse Data から、STAGINGデータベースを確認します。ステップ名と同一のコレクション名で絞り込むと、下記のようにサンプルデータであるPDFファイルが格納されていることが確認できます。 続いて、クエリコンソールからも確認を行います。クエリコンソールにアクセスを行い、cts.wordQueryクエリをSTAGING データベースに対して発行します。 このようにバイナリデータの場合、単にMarkLogicにデータを読み込んだだけでは、内部のテキストやメタデータに関するインデックスは作成されず、全文検索を行うことが出来ません。 MarkLogicはバイナリデータのメタデータ抽出を行うための仕組みをいくつか提供しています。今回のエントリでは代表例として、Document Filter APIについてご紹介します。 Document Filter APIを利用することにより、対応フォーマットのファイルであれば、バイナリデータのURIを引数に渡すことにより、テキストやメタデータをXHTML形式で抽出することが可能です。 すると、PDF内のメタデータや内部テキストがXHTMLの形式で返ってくることが確認できます。 この結果をMarkLogic内で保存することにより、バイナリデータそのものに含まれるテキスト等についても、クエリ対象にすることが可能です。実装方式は要件によって異なってきますが、今回はシンプルにCustom Stepを追加し、その中でDocument Filterの処理を追加する場合についてご紹介します。 Document Filter処理の追加Custom Stepを追加し、自動生成されるmain.sjs ファイルを編集していきます。 標準では下記のディレクトリに、main.sjsファイルが作成されます。 main.sjsの変更箇所は主に下記の3点となります。
main.sjsモジュールの編集・再デプロイ後、”RUN”ボタンをクリックして、再度フローを実行します。FINALデータベースを確認し、バイナリデータとDocument Filterを利用して抽出されたデータ(.xhtml)の両方が書き込まれていることを確認します。Document Filterの出力を含むデータの場合、テキストの中身が確認できる状態になっていることがわかります。 更にクエリコンソールからcts.wordQueryクエリをFINALデータベースに対して発行すると、下記のように結果が返ってくることが確認できます。 今回はバイナリデータを取り扱う場合の注意点および、Document Filter APIを活用したテキストおよびメタデータ抽出の方法についてご紹介しました。
The post MarkLogic Data Hub バイナリデータの取り込みについて appeared first on MarkLogic. | ||||