リポジトリの全文検索 with HyperEstraier プラグイン Ver 0.1
ここでは、Hirobeさん作、リポジトリ検索プラグインの!SearchHyperEstraierについて記述してます。
以下、 TracDoc/SearchHyperEstraierPlugin – HirobeのHack倉庫 – Tracを
TracLightningで使うことに限定して再構成しております。
1. 概要
CGI版でもmod_python版でも動きます。
仕組み:バッチでリポジトリをエクスポートし、HyperEstraierのインデックスを生成します。
Trac内でコマンド版cmdestを実行し、その結果を表示します。
制限
- リポジトリ内の最新のファイルしか検索できません。
- apacheからcmdest.exeを起動できるように権限設定が必要かもしれません。
2. セットアップ
2.1.インデックスの設定をする
リポジトリのエクスポートとインデックス生成を行うバッチを作成します。
makeindex.batを適切に書き換えてください。冒頭部の環境変数を書き換えてください。
このバッチでやっているのは、(1)リポジトリのエクス ポート(2)インデックス生成です。
なお、リポジトリのエクスポートの認証は考慮してません。認証が必要であればsvn exportに適切な引数を設定してください。
makeindex.batの例(!MyProjectのtrunkを検索対象に)
set EXPORT_FOLDER=C:\TracLight\RepositorySearch\MyProject\rep set INDEX_FOLDER=C:\TracLight\RepositorySearch\MyProject\casket set REPOS_URI=file:///C:/TracLight/projects/svn/MyProject/trunk rmdir /S /Q %EXPORT_FOLDER% rmdir /S /Q %INDEX_FOLDER% svn export %REPOS_URI% %EXPORT_FOLDER% estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %EXPORT_FOLDER%
EXPORT_FOLDER | リポジトリのエクスポート先となるフォルダ。空のフォルダを指定。 |
REPOS_URI | エクスポート元となるリポジトリのURI |
INDEX_FOLDER | インデックスの生成先フォルダ。空のフォルダを指定。 |
通常は上記のようにtrunkなどリポジトリの一部を指定します。
(全体にしてしまうとtagsやbranchesの中身もチェックアウトしてしまいます。)
また、makeindex.batはどこにおいてもかまいません。
また上記ではおそらく「.pdf,.rtf,.doc,.xls,.ppt」の拡張子のファイルしか検索しません。
.txtや.cなどテキストファイルであればestxfilt.batで呼ばれるxdoc2txtがスルーで出してくれるので
estcmd gather -cl -fx .pdf,.rtf,.doc,.xls,.ppt,.txt,.c T@estxfilt -ic CP932 -pc CP932 -sd %INDEX_FOLDER% %EXPORT_FOLDER%
のように-fxの後に続く拡張子の列挙の後に続けて記述すると検索されます。
2.2 trac.iniを設定する
テキストファイルでtrac.ini(リポジトリのフォルダのconf配下)を開いて searchhyperestraierというブロックを追加してください。
index_path | インデックス生成パス(makeindex.batのINDEX_FOLDER) |
replace_left | 検索結果のパスの頭で削るべき文字列。 |
browse_trac | Tracのブラウザへのリンクを作るか否か。enabled=Tracのブラウザへのリンクを作る。デフォルトは'enabled'。 |
url_left | URLを生成する際に頭につける文字列。browse_trac=enabledの場合は/がリポジトリのルートになるようにすること。 |
estcmd_path | 環境変数PATHが設定済みなら設定不要。estcmd.exeの絶対パス。デフォルトは'estcmd' |
estcmd_arg | Windowsでは設定不要。estcmd.exeの引数。デフォルトは'search -vx -sf -ic Shift_JIS' |
estcmd_encode | Windowsでは設定不要。コマンド実行時のエンコード(Pythonでの形式)。デフォルトは'mbcs' |
例:
[searchhyperestraier] index_path = C:\TracLight\RepositorySearch\MyProject\casket replace_left = C:\TracLight\RepositorySearch\MyProject\rep url_left = /trunk
browser_tracがenabledになる場合は、登録されるURLはTracのリポジトリブラウザでRoot直下が/となるように replace_left,url_leftを調整する必要があります。
たとえば、リポジトリブラウザでRoot/trunk/test3/検索のテスト.docと表示されるファイルは、/trunk/test3/検索のテスト.docとなるように調整してください。
難しければ、何も設定せずに、検索結果として表示されたURLを見ながら調整してください。
通常、EXPORT_FOLDER=replace_left、INDEX_FOLDER=index_pathになります。
また、上記ではREPOS_URIの中身が「…/MyProject/trunk」となっているので、
プロジェクトを示す「MyProject」より後ろの「/trunk」をurl_leftに入れます。
2.3 apacheを再起動する
trac.iniを設定したら、apacheを再起動してください。
(「サービスのアンインストール」を実行、再度「サービスのインストール」を実行。)
3. 検索してみる
検索タブをクリックして、「リポジトリ」チェックボックスが表示されることを確認してください。
適当なキーワードで検索して、結果(source:xx )が表示されることを確認してください。
リンクをクリックして、画面がリポジトリブラウザに切り替わり、正しくそのファイルを表示していることを確認してください。
4. makeindex.batをタスク設定する
動作確認ができたらmakeindex.batが1日1回実行できるようにWindowsのタスクを設定してください。
2000またはXPでは、タスクの追加は、以下のように行います。
[スタート]メニューから[プログラム]-[アクセサリ]-[システムツール]-[タスク]
または
[コントロール パネル]の[タスク]
を開き、[スケジュールされたタスクの追加]をクリックします。
するとタスクウィザードが起動します。
「実行するプログラムを1つ選択してください。」のところで、
参照ボタンを押し、makeindex.batを指定してください。
「このタスクの実行」で「日単位」を選択してください。
その後、開始日時などを設定します。
最後にユーザー名とパスワードの入力を行って終了です。
完了ボタンを押すと登録されます。
5. 設定時刻を待たずにすぐ更新する
もし、設定時刻を待たずにすぐ更新したい場合は、
makeindex.batを直接実行してください。