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フォルダを作成して保存します。

f:id:ponmiki:20200802004754p:plain

HyperEstraierに同梱されているxdoc2txtをv2系の最新版に差し替えます。私はWindows Server 2016(体験版)で検証しているので、xdoc2txt 64bit(x64)版をダウンロードして上書きします。動作には Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ (x64) - 64bit版 も必要なのであわせてダウンロードしてインストールしました。

f:id:ponmiki:20200802004757p:plain

Trac Lightning 4.0 Devのインストールフォルダに Search フォルダを作成します。

f:id:ponmiki:20200802004802p:plain

Search フォルダの中に Repos というリポジトリ用のフォルダを作成します。

f:id:ponmiki:20200802004807p:plain

Tracのプロジェクト名フォルダを作成します。今回はデフォルトで作成されるプロジェクトの SampleProject で作成します。

f:id:ponmiki:20200802004810p:plain

SampleProject フォルダの中にcasket と rep フォルダを作成します。

f:id:ponmiki:20200802004815p:plain

Search フォルダまで戻ったら、Attach フォルダを作成します。その中に同じようにSampleProject フォルダを作成し、その中にcasket フォルダを作成します。

f:id:ponmiki:20200802004827p:plain

デフォルトでインストールされているHyper Estraierプラグインを削除します。C:\TracLight\python\Lib\site-packages\ にある TrachyperestraierPluginフォルダを削除します。

f:id:ponmiki:20200802004830p:plain

不要かもしれませんが、Trac Lightningサービスを再起動します。

f:id:ponmiki:20200802004834p:plain

最新のHyper Estraierプラグインをダウンロードさせてもらいます。感謝!

https://github.com/jun66j5/trachyperestraierplugin/tree/trac-1.0

f:id:ponmiki:20200802004837p:plain

ZIPを解凍します。

f:id:ponmiki:20200802004840p:plain

スタートメニューから TracLightningコマンドプロンプトを起動します。

f:id:ponmiki:20200802004844p:plain

先程、解凍したフォルダに cd で移動し、python setup.py bdist_egg と入力して、eggファイルを作成します。

f:id:ponmiki:20200802004847p:plain

こんな感じで作成されたら成功です。

f:id:ponmiki:20200802004856p:plain

Tracの管理画面からeggファイルを選択してインストールします。

f:id:ponmiki:20200802004900p:plain

Trac.iniファイルに設定を書きます。UTF-8に対応したエディタで更新しましょう。
不明な点は下記のページが参考になると思います。

plugins/SearchHyperestraierPlugin - Shibuya.trac Wiki - Shibuya.trac - OSDN


f:id:ponmiki:20200802004903p:plain

[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はインデックスを削除して新規作成じゃなくて、更新もできるハズだしね。

f:id:ponmiki:20200802004823p:plain

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/SampleProject

rmdir /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がいるんだけど……たぶん使われていないように見えます。未検証。

 

ということで、検索できるようになりました。素晴らしいです。

f:id:ponmiki:20200802020454p:plain