Trac Lightning 4.0 Dev + Hyper Estraierプラグイン
Trac 1.0から添付ファイルの保存先が変わったので、Hyper Estraierプラグインにて添付ファイルの全文検索ができなくなっていたのですが、Hyper Estraierプラグインを修正していただきました。Tracユーザーが少しでも増えてくれることを願いつつ、TL4.0で新規設定の手順を紹介します。
Hyper Estraierをダウンロードします。公式サイトより新しい Windows版1.4.13をファイルサーバ検索システムを作る - めも日記 様からダウンロードします。解凍してCドライブ直下にHyperEstraierフォルダを作成して保存します。
HyperEstraierに同梱されているxdoc2txtをv2系の最新版に差し替えます。私はWindows Server 2016(体験版)で検証しているので、xdoc2txt 64bit(x64)版をダウンロードして上書きします。動作には Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ (x64) - 64bit版 も必要なのであわせてダウンロードしてインストールしました。
Trac Lightning 4.0 Devのインストールフォルダに Search フォルダを作成します。
Search フォルダの中に Repos というリポジトリ用のフォルダを作成します。
Tracのプロジェクト名フォルダを作成します。今回はデフォルトで作成されるプロジェクトの SampleProject で作成します。
SampleProject フォルダの中にcasket と rep フォルダを作成します。
Search フォルダまで戻ったら、Attach フォルダを作成します。その中に同じようにSampleProject フォルダを作成し、その中にcasket フォルダを作成します。
デフォルトでインストールされているHyper Estraierプラグインを削除します。C:\TracLight\python\Lib\site-packages\ にある TrachyperestraierPluginフォルダを削除します。
不要かもしれませんが、Trac Lightningサービスを再起動します。
最新のHyper Estraierプラグインをダウンロードさせてもらいます。感謝!
https://github.com/jun66j5/trachyperestraierplugin/tree/trac-1.0
ZIPを解凍します。
スタートメニューから TracLightning のコマンドプロンプトを起動します。
先程、解凍したフォルダに cd で移動し、python setup.py bdist_egg と入力して、eggファイルを作成します。
こんな感じで作成されたら成功です。
Tracの管理画面からeggファイルを選択してインストールします。
Trac.iniファイルに設定を書きます。UTF-8に対応したエディタで更新しましょう。
不明な点は下記のページが参考になると思います。
plugins/SearchHyperestraierPlugin - Shibuya.trac Wiki - Shibuya.trac - OSDN
[searchhyperestraier]
.index_path = C:\TracLight\search\repos\SampleProject\casket
.replace_left = C:\TracLight\search\repos\SampleProject\rep
.url_left = /
att_index_path = C:\TracLight\search\attach\SampleProject\casket
estcmd_arg = search -vx -sf -ic Shift_JIS -max -1
estcmd_path = C:\hyperestraier\estcmd.exe
filters = *.xls:*.xlsx:*.doc:*.docx:*.pptx=T@C:\hyperestraier\xdoc2txt.exe -i -p -8, *=T@C:\hyperestraier\xdoc2txt.exe -i -8
estcmd_arg の maxオプションで最大件数を設定します。負数で上限なしです。件数を書かないと最大10件までなので注意しましょう。ハマリました。
fileters でPDFとか個別で書いていませんが、テキスト検索が可能なPDF(サーチャブルPDF)も解析するので検索対象になります。
バッチファイルでインデックスの作成処理を書きます。添付ファイルやリポジトリのファイル数が多い場合は夜間処理をするとかになると思います。あとは、インデックスファイルの差し替えのタイミングを工夫して、インデックスファイルが存在しない時間を短くできれば1日複数回インデックスを更新できると思います。……そもそもHyper Estraierはインデックスを削除して新規作成じゃなくて、更新もできるハズだしね。
REM リポジトリ
set INDEX_FOLDER=C:\TracLight\search\repos\SampleProject\casket
set EXPORT_FOLDER=C:\TracLight\search\repos\SampleProject\rep
set REPOS_URI=file:///C:/TracLight/projects/svn/SampleProjectrmdir /S /Q %EXPORT_FOLDER%
rmdir /S /Q %INDEX_FOLDER%C:\TracLight\CollabNetSVN\svn.exe export --username admin --password admin %REPOS_URI% %EXPORT_FOLDER%
C:\hyperestraier\estcmd.exe gather -cl -fx .pdf,.doc,.xls,.ppt,.xlsx,.docx,.pptx T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %EXPORT_FOLDER%
REM 添付ファイル
set INDEX_FOLDER=C:\TracLight\search\attach\SampleProject\casket
rmdir /S /Q %INDEX_FOLDER%C:\TracLight\bin\trac-admin.bat C:\TracLight\projects\trac\SampleProject searchhyperestraier gather attachments
svn.exe exportする時のadminのパスワードを変えていればそれにあわせて下さい。adminじゃない方がそもそも良いですが。あと、添付ファイルのインデックスの作成方法がTrac-adminを使用した方法に変わっているのは今回のバージョンアップによるものです。ちなみに、Trac-adminと同じフォルダにxdoc2txtがいるんだけど……たぶん使われていないように見えます。未検証。
ということで、検索できるようになりました。素晴らしいです。