Table of Contents
gdestraier は、全文検索エンジン Hyper Estraier を利用したGnome環境で動作する文書検索クライアントです。
作成済みのインデックスを登録(複数)して、検索式で検索する
GUIを使ってインデックスの構築できる
検索した文書を、GnomeのMIME型ハンドラを使って開ける
D-BUS シグナルをトリガーとして検索を実行できる
検索した文書をDrag&Dropで他アプリへドロップできる
gdestraierの最新版は以下の場所で見付ける事ができます。
http://www.mitsuki.no-ip.com/~seagull/arch-archives/2004/の gdestraier--seagull--0.1 が現在の先端です。
archzoomで閲覧する事もできます。
gdestraier-0.2.6.tar.gz / gdestraier-0.2.6.tar.bz2 .debパッケージ( Sarge, Sid ) (2005-11-25)
代替設定ファイルのパスを指定するコマンドラインオプション --user-configを追加。
ドキュメントをインストールしないようにした。
xmltoが無い時にはドキュメントを構築しないようにした。
Debianパッケージを作れるようにした。
[bugfix] Sargeでコンパイルエラーになる所を修正。
gdestraier-0.2.5.tar.gz / gdestraier-0.2.5.tar.bz2 (2005-11-16)
Hyper Estraier のC++ラッパをインストールしないようにした。
インデックスのプロパティで、ファイルシステムのエンコーディングはもう必要無いので除去。
コードのクリーンアップ
[bugfix] --disable-dbusを指定するとpkg-config用の初期化が行われない現象に対処。
[bugfix] インデックスの編集でファイルタイプを明示すると @type 属性が設定されないバグを修正
[bugfix] ローカルインデックスが開けなかった時に例外で落ちるのを修正。
gdestraier-0.2.4.tar.gz / gdestraier-0.2.4.tar.bz2 (2005-11-12)
検索結果を他のアプリにDrag and Dropできるようになった。
グループ化せずにフラット表示するモードを追加。
終了時にウィンドウの位置とサイズを記録して復帰するようにした。
Microsoft ExcelとMicrosoft Power Pointのフィルタを追加。
ディレクトリもインデックスして探せるようにした。
gatherのファイル列挙に、gnome_vfsを使うようにした。関連して_lpath等ローカルファイルシステムでしか意味の無い属性を削除。
インデックスの属性として、タイトルとURIを本文に含めるか(フレーズ検索対象にするか)を選択できるようにした。
本文に含めるURIを%xx形式でなく、デコードした状態で記録するようにした。
HTMLの解析で、段落が細切れになってしまっていたのを修正。ほぼestcmd互換になったはず。
--gatherコマンドラインオプションを追加。
[bugfix] --disable-dbusの時にコンパイルが通らなかったのを修正。
[bugfix] フィルタがサイズ0のファイルを考えていなかったのを修正。
gdestraier-0.2.3.tar.gz / gdestraier-0.2.3.tar.bz2 (2005-11-05)
ローカルインデックスからpurgeする時、1文書削除した段階で停止するバグを修正。0.2.2で混入していた。
D-BUS経由で検索できるようになった。
要約の生成を抑止できるようにした。インデックス毎に指定できるので、遠いインデックスは抑止しておくと吉。
gdestraier-0.2.2.tar.gz / gdestraier-0.2.2.tar.bz2 (2005-11-03)
gnomeのproxy設定に対応
サムネイルをバックグラウンドで読み込むようにした
ソート機能を実装
MIME型の説明文が取り出せない時、MIME型名そのものを表示するようにした
gather時、拡張子でタイプの判別が付かない場合、gnomeへ問い合わせたMIME型を元に判別するようにした
Hyper Estraier 1.0.3へ追従
ノードに対してgather/purgeできるようにした
検索に要した時間をステータスバーに表示するようにした
文書のスコアも表示するようにした
ノードから取得する最大件数を設定できるようにした
@type属性にcharset=とかが付いている場合があるので、セミコロンより前のみを使うようにした
文書の更新日時の表記を、ロケールに合わせて正規化するようにした
D-BUSサポートの開始。まだ動かないので、configureオプションに--disable-dbusを指定してください。
その他のバグ修正とクリーンアップ
gdestraier-0.2.1.tar.gz / gdestraier-0.2.1.tar.bz2
~/.gdestraierrc ファイル読み込みのバグ修正
さらにDebian sarge対応を進める為、新しいWidgetやAPIを使わないようにした
Fix crash About dialog
文書タイトルとパスで探せないファイルがあったのを修正。
未知のファイルでもとりあえずファイル名で探せるようにした。
インデックス構築時、purgeすると全部消えるバグを修正。0.2.0で混入していた。
UTF8ロケール以外でクラッシュしたり化けたりするのをいくらか解消。
gdestraier-0.2.0.tar.gz / gdestraier-0.2.0.tar.bz2
インデックス構築ダイアログのバグ修正。
サムネイルとアイコンを表示するようにした。
インデックス構築時、ローカルパスからURIへの変換にGnome-VFSを使うようにした。
Debianパッケージメンテナンスの悪い外部ライブラリと決別。gnomemm, gnome-vfsmm, gnomeuimm, glademm は不要になりました。
ノードAPI越しの検索に対応。
コンテキストメニューで、デフォルト以外のアプリケーションからも開けるようになった。
ツールバーで検索対象インデックスを選べるようにした。
gdestraier-0.1.6.tar.gz / gdestraier-0.1.6.tar.bz2
インデックス構築関係で cleanup。
インデックス構築のpurgeとoptimizeに、estcmdを使わないようにした。
estcmd extkeysを呼び出す為のオプションを、インデックス構築ダイアログに追加。
QuickBuildボタンを追加。QuickBuildはgatherのみをボタン1つで実行する機能です。
エンコーディングの一覧を内蔵して、iconv呼び出しを止めた。
ID3v2タグフィルタを追加
PDFフィルタを追加。PATHの通っている位置にpdftotextが必要。
バグ修正
gdestraier-0.1.5.tar.gz / gdestraier-0.1.5.tar.bz2
設定ダイアログを開く時、安全の為に検索結果を消去するようにした。
設定ダイアログのバグ修正。
キーワード毎の色分けを実装。
Document update
文書タイトルが無い場合に、ファイル名を使うようにした。
検索結果のグループ化に対応。
バグ修正
gdestraier-0.1.4.tar.gz / gdestraier-0.1.4.tar.bz2
コンテキストメニュー関係のコードを整理。
結果一覧にPango markupを使ってみた。GtkHTMLとかGecko使った方がいろいろできるけど、 estseekと変わらなくなっちゃうので、とりあえずは採用しない方向で。
文書タイトルの置換ルールを追加。Webサイト等ではサイトの名称が固定で入っている場合があるので、 不要なら消せるようにした。でも、これってインデクサ側でなんとかすべき問題だよね。
キーワードを含まないゴミ文書を、検索結果から除去するようにした。
色とフォントの設定を追加。
検索式を、簡便法を使うようにした。
バグ修正
gdestraier-0.1.3.tar.gz / gdestraier-0.1.3.tar.bz2
Aboutダイアログを追加
gettextサポート
estcmdの-cs(キャッシュサイズ)オプションに対応
Fix index build dialog crash.
文字エンコーディングの一覧をiconvから取得するようにした
~/.gdestraierrcパーサのバグ修正
文書snippetをとりあえず作ってみた。UIはそのうち練り直す方向で。
URI置換を実装。boost::regexでやってるんで、perl互換の$1,$2とか使える。
gdestraier-0.1.2.tar.gz / gdestraier-0.1.2.tar.bz2
コンテキストメニューをサポート(リストの右クリックだけ)
MIME型ハンドラを使ったアプリケーションの起動をサポート(デフォルトアプリケーションだけ。 事情)
インデックス編集ダイアログを2回閉じないと閉じてくれないバグを修正
その他の細かいバグ修正
gdestraier-0.1.1.tar.gz / gdestraier-0.1.1.tar.bz2
不足していたファイルがあったのを修正
インデックスの構築をサポートした。
gdestraier-0.1.0.tar.gz / gdestraier-0.1.0.tar.bz2
最初のリリース。とりあえず検索ができる。
gdestraierは外部ライブラリとして以下のものを必要とします。
Hyper Estraier >= 1.0.4 |
QDBM >= 1.8.31 |
libglade-2.0 >= 2.4.1 |
gtkmm-2.4 >= 2.4.1 |
libgnome-2.0 >= 2.8.1 |
libgnomeui-2.0 >= 2.8.1 |
gnome-vfs-2.0 >= 2.8.4 |
gconf-2.0 >= 2.8.1 |
eel-2.0 >= 2.8.2 |
libxml++-2.6 >= 2.6.1 |
boost |
boost_regex |
boost_time |
libid3 >= 3.8.1 (オプション) |
dbug-glib-1 >= 0.50 (オプション) |
pthread |
その他、ビルドツールとしてxmltoが必要です。コンパイラはg++-4.0で開発しています。 古いg++でも大丈夫だと思いますが、g++3とg++4の両方をインストールしているような環境では、 ABIの整合性に注意してください。
いつもどおり、./configure;make;make installでOKです。 configure時には以下のオプションが使えます。
デバッグモードでビルドします。
id3v2タグフィルタを組み込みません。 id3v2タグフィルタを組み込む場合には、libid3がインストールされている必要があります。
D-BUSサポートを無効にします。
gdestraier を始めてインストールした場合、外部コマンドのパスを登録する必要があります。
まず、設定ダイアログを開き( estcmdのパスを正しく設定してください。
-> )ます。 「外部コマンド」タブを開くと、estcmdのパスを設定するボタンがあるので、 インストールされている設定後は、いったん gdestraierを終了させてください。
検索を始める前に、検索するインデックスを登録する必要があります。 インデックスはgdestraierで作成/更新する事もできますし、 すでに estcmdで作成されているインデックスを登録して使う事もできます。
先ほどと同様に、設定ダイアログを開き(
-> )、「インデックス」タブで ボタンを押して新しいインデックスを登録する為の「インデックス編集」ダイアログを開きます。インデックスの名前です。インデックスには自由な名前を設定でき、 検索結果の文書がどこから来たものかを識別するのに使います。
ローカルインデックスか、ノードを使うかを指定します。
ローカルインデックスのディレクトリか、ノードのURL(http://foo/node/baz/)を指定します。
ローカルインデックスを使う場合には、
/var/cache/estraier/インデックス名/
または
~/var/cache/estraier/インデックス名/
がお薦めです。
ノードを使う場合のユーザ名とパスワードを設定します。両方空の場合には認証を試みずに、 匿名でアクセスします。
チェックを付けて、このインデックスを実際の検索対象とする事を指定します。 一時的に使いたくないけど、設定だけは登録したままにしておきたい時に使います。
検索したい実際の文書が入ったディレクトリを指定します。 通常、ディレクトリは再帰的に検索されるので一番上のディレクトリを指定します。
空にしておくと、ファイルシステムとインデックスを結びつけないという意味になり、 そのインデックスは構築の対象から自動的に除外されます。
チェックを付けるとクィックビルドの対象となり、ツールバーのボタンで簡易構築できるようになります。
簡易構築はボタン一発でgatherを行う事ができる機能ですが、存在しなくなった文書の削除を行いません。
文書ディレクトリ中に含まれる文書の種類を固定する時に使用します。通常は「自動」を指定してください。
gdestraierは、ファイルの拡張子とMIME型を元にテキストフィルタを切替えますが、 ディレクトリ中に特定の種類のファイルしか存在せず、かつgdestraierが種類の判定を間違える時に、 強制的に種類を固定する事ができます。
文書の言語と文字エンコーディングを指定します。言語はエンコーディングの自動認識に使います。 通常は、言語を「日本語」又は「英語」にして、エンコーディングを「自動」にすればいいでしょう。
チェックを付けると、そのインデックスでは言語にかかわらず常にN-gram方式でインデックスを作成します。
このオプションは、ローカルに新規にインデックスを作るとき以外は効果を持ちません。
チェックを付けると、文書をインデックスする際に文書のタイトルとURIもインデックスします。
チェックを外すとタイトルやURIの一部のテキストを使って検索する事ができなくなるのでお薦めしませんが、 必要が無い場合に外しておくとgatherのパフォーマンス向上とインデックスサイズの軽減が期待できます。
インデックスに登録されている文書のURIと、実際にアクセスしたいURIが異なる場合、 ここで置換ルールを設定します。正規表現中で括弧を使うと、 置換文字列側では $1,$2という形で参照できます。
Webサイト等、複数の細かいファイルからなる文書を登録した場合、 そのタイトルにはサイトの名前等の固定の部分文字列が含まれている事がよくあります。
これを取り除いて表示したい場合には、ここで置換ルールを設定します。
ノードの場合に、探索するノード深度を指定します。 詳しくは、Hyper EstraierのP2Pガイドを参照してください。
このインデックスから検索する最大の文書数を指定します。
ノードの場合、ここで指定した値よりもサーバで設定されている最大数が優先されます。
文書の要約を取り出すかどうかを指定します。要約を取り出さないようにすると、若干パフォーマンスが上がり、 ノードの場合には転送量も削減できます。
検索を始める前に、インデックスを構築しなくてはいけません。 先の手順で、すでに存在するインデックスを登録した場合には、このステップは必要ありません。
インデックスの構築ダイアログ(
-> )を開き、構築対象のインデックスと構築オプションを指定してから ボタンを押すとインデックスが作成/更新されます。文書が更新されていた時、インデックスDBの領域を回収するかどうかを指定します。
ファイルが削除された時、インデックスDBの領域を回収するかどうかを指定します。
インデックス中に登録されたファイルが実際に存在するかどうか検査して、 存在しない文書を削除します。
インデックスデータベースを最適化します。
新規/更新文書の検出をスキップします。 削除/最適化処理だけを行いたい時に使います。
インデックスからキーワードを抽出して、キーワードデータベースを更新します。
インデックス構築時に使用するキャッシュサイズをMB単位で指定します。
作業進捗に合わせてログが表示されます。
0.2.3より、D-BUS経由で検索を実行する事ができます。
残念ながらまだクライアントツールがありませんが、D-BUSに付属のツールを使ってリクエストを発行できます。 (うまく使えばURIハンドラとして登録できそうな気がしますが、まだうまくいってません)
dbus-send --session --type=method_call --dest=com.no_ip.mitsuki.gdestraier /com/no_ip/mitsuki/gdestraier com.no_ip.mitsuki.gdestraier.searcher.search string:'検索式'
その内、アプリケーションから文書の更新通知をドキュメントドラフトといっしょに受け取って、インデックス更新できるようになると楽しいかも。
gdestraierは開発途上のアプリケーションです、 ある日いきなりあなたのファイルを破損するような事が無いともいえません。ってか、たぶんあるでしょう。 くれぐれもバックアップを怠る事無く、自己責任でご使用になられるようお願いします。