PDFやオフィス文書の内容を検索 (DocumentSearchプラグイン)

このプラグインは有償のオプションプラグインです。

SearchEstraierプラグインのインデックスに PDF や Microsoft オフィスドキュメントを追加して検索可能にします。
ファイル拡張子 pdf / xlsx / xls / docx / doc /pptx / ppt / html ( htm ) のファイルに対応しています。

設置とインストール

必要な外部コマンド

  • wvWare と xlhtml(ppthtmlも同梱)
  • pdftotext(xpdfに同梱)及び xpdf-japanese

外部コマンドの入手先

追加フイルタのインストール

plugins/DocumentSearch/filters にある以下のファイルを /usr/local/share/hyperestraier/filter (環境変数 : documentsearch_filter_path で指定したパス) にコピーします。

  • estfxopenxmltohtml (Office Open XML(xlsx/pptx/docx)用のフィルタ)

このスクリプトは Perlで書かれています。環境に応じて一行目の「#!/usr/bin/perl -w」を修正し、実行権限(chmod 755)を追加してください。
Perlモジュール「File::Temp」「Archive::Zip」が必要です。

環境設定

以下の環境変数を必要に応じて config.json の config_settings に記述します。

  • documentsearch_pdftotext_path (pdftotextコマンドのパス) : 初期値 /usr/local/bin/pdftotext
  • documentsearch_filter_path (HyperEstraierのフィルタのパス) : 初期値 /usr/local/share/hyperestraier/filter

フィルタのテスト

1. pdf

以下のコマンドを実行して、pdf.txt に文書ドラフト形式のデータが保存されるかどうかを確認します。
文書ドラフト形式については、HyperEstraier のユーザガイドを参照してください。

/usr/local/share/hyperestraier/filter/estfxpdftohtml "/path/to/filename.pdf" | /usr/local/bin/estcmd draft -fh > pdf.txt

※ 生成される文書ドラフトの例

@size=(文書のサイズ)
@title=PDF文書のタイトル
@type=text/html

PDFから抽出されたテキスト...
PDFから抽出されたテキスト...
PDFから抽出されたテキスト...
    PDF文書のタイトル

このテストで文書ドラフトが正常に作成されない場合、plugins/DocumentSearch/filters にある以下のファイルを /usr/local/share/hyperestraier/filter (環境変数 : documentsearch_filter_path で指定したパス) にコピーします。

  • estfxpdftohtml2 (最新の pdftotextに対応したフィルタ)

このスクリプトは Perlで書かれています。環境に応じて一行目の「#!/usr/bin/perl -w」を修正し、実行権限(chmod 755)を追加してください。
Perlモジュール「File::Temp」が必要です。

再度、以下のコマンド (/usr/local/bin/は pdftotextの設置場所のパス) を実行して、pdf.txt に文書ドラフト形式のデータが保存されるかどうかを確認します。

/usr/local/share/hyperestraier/filter/estfxpdftohtml2 "/path/to/filename.pdf" "/usr/local/bin/" | /usr/local/bin/estcmd draft -fh > pdf.txt

2. xlsx / docx / pptx

以下のコマンドを実行して、各々文書ドラフト形式のデータが保存されるかどうかを確認します。

/usr/local/share/hyperestraier/filter/estfxopenxmltohtml "/path/to/filename.xlsx" | /usr/local/bin/estcmd draft -fh > "xlsx.txt"
/usr/local/share/hyperestraier/filter/estfxopenxmltohtml "/path/to/filename.docx" | /usr/local/bin/estcmd draft -fh > "docx.txt"
/usr/local/share/hyperestraier/filter/estfxopenxmltohtml "/path/to/filename.pptx" | /usr/local/bin/estcmd draft -fh > "pptx.txt"

3. xls / doc / ppt

以下のコマンドを実行して、各々文書ドラフト形式のデータが保存されるかどうかを確認します。

/usr/local/share/hyperestraier/filter/estfxmsotohtml "/path/to/filename.xls" | /usr/local/bin/estcmd draft -fh > "xls.txt"
/usr/local/share/hyperestraier/filter/estfxmsotohtml "/path/to/filename.doc" | /usr/local/bin/estcmd draft -fh > "doc.txt"
/usr/local/share/hyperestraier/filter/estfxmsotohtml "/path/to/filename.ppt" | /usr/local/bin/estcmd draft -fh > "ppt.txt"

4. html ( htm )

以下のコマンドを実行して、文書ドラフト形式のデータが保存されるかどうかを確認します。

/usr/local/bin/estcmd draft -fh "/path/to/filename.html" > "html.txt"

プラグイン設定

  • システム設定を利用する(スペースのプラグイン設定でのみ指定可能) : システム設定を継承して利用する時、チェックします。
  • ファイルタイプ : pdf / xlsx / xls / docx / doc /pptx / ppt / html ( htm ) から、検索対象とする拡張子をチェックします。
  • モデル : バイナリ型カラムで、編集表示が「ファイル」となっているもののうち、「画像」「オーディオ」「ビデオ」ではないカラムを持つモデルの一覧から、インデックス対象とするモデルをチェックします。インストール直後のデフォルトでは「アセット」と「添付ファイル」が表示されます。

ブロックタグ EstraierSearch での拡張子でのフィルタリング

以下の例では、拡張子 pdf のドキュメントのみを対象とします。

<mt:estraiersearch phrase="$query" ad_attr="@suffix" add_condition="STREQ" value="pdf">

複数の条件指定時は AND 指定となるため、複数の拡張子を指定する場合は、除外指定する拡張子を以下のように複数指定します。
以下の例では、Microsoft Excelで作成されたファイル以外を対象に検索します。

<mt:estraiersearch phrase="$query" ad_attrs="'@suffix','@suffix'" add_conditions="'STRNE','STRNE'" values="'xls','xlsx'">

この指定の時、以下の条件式で検索を実行します。

/usr/local/bin/estcmd search -vx -max 10 -sn 200 100 100 -um -attr '@suffix STRNE xls' -attr '@suffix STRNE xlsx' '/path/to/support/search/index' 'キーワード'

レコメンド APIの拡張子でのフィルタリング

以下の例では、拡張子 pdf のドキュメントのみを対象とします。

/powercmsx/plugins/SearchEstraier/app/pt-recommend-api.php?type=both&limit=5&url=(エンコードされたページのURL)&suffix=pdf

複数の条件指定時は AND 指定となるため、複数の拡張子を指定する場合は、除外指定する拡張子を以下のように exclude_suffixes パラメタに複数指定します。
以下の例では、Microsoft Excelで作成されたファイル以外を対象に検索します。

/powercmsx/plugins/SearchEstraier/app/pt-recommend-api.php?type=both&limit=5&url=(エンコードされたページのURL)&exclude_suffixes=xls,xlsx