Sylph-Searcher - Sylpheed の全文検索プログラム

Copyright (C) 2007-2009 Sylpheed Development Team

Sylph-Searcherとは
==================

Sylph-Searcher は Sylpheed のメールボックス、あるいは他のメールソフトの
MH フォルダに保存されているメッセージを全文検索するプログラムです。
PostgreSQL 8.3の全文検索機能を利用しています(8.2 でも動作しますが、
全文検索機能が標準で組み込まれた 8.3 の使用を推奨します)。

Sylph-Searcher は BSD ライセンスに従って配布されています。詳細は COPYING
を参照してください。

Sylph-Searcherは以下のソフトウェアが必要です:

GLib 2.4.0 以上 (http://www.gtk.org/)
GTK+ 2.4.0 以上 (http://www.gtk.org/)
MeCab 0.96 以上 + mecab-ipadic (http://mecab.sourceforge.net/)
  * MeCab 0.95 以下はバッファオーバーフローのバグがあるため使用しないで
    ください
  * 日本語のわかち書きが不要な場合(英語のみで使用する場合など)はなくても
    インストール可能
PostgreSQL 8.2 以上 (http://www.postgresql.org/)
  * PostgreSQL 8.2 の場合は contrib/tsearch2 が必要
LibSylph 1.0.0 以上 (http://sylpheed.sraoss.jp/)

インストール
============

最初に、 GLib, GTK+, MeCab, mecab-ipadic, PostgreSQL をインストールして
ください。それぞれのインストール方法は各ドキュメントを参照してください。

1. tsearch2 のインストール(PostgreSQL 8.2 の場合のみ)
-----------------------------------------------------

PostgreSQL 8.2 の場合、 PostgreSQL の contrib に同梱されている tsearch2 を
インストールする必要があります。 8.3 からは tsearch2 が本体に標準で組み込まれ
ているため、 tsearch2 のインストールは不要です。

% cd (PostgreSQL のソースディレクトリ)/contrib/tsearch2
% make
% sudo make install

2. Sylph-Searcher のインストール
--------------------------------

次に Sylph-Searcher を make し、インストールします。
Sylph-Searcher のソースディレクトリ上で実行してください。
デフォルトでは、実行ファイルは /usr/local/bin 、 SQL スクリプトは
/usr/local/share/sylph-searcher/sql にインストールされます。

% ./configure
% make
% sudo make install

インストール先は configure スクリプトの --prefix オプションで変更できます。
また、 configure に以下のオプションを指定することで PostgreSQL と LibSylph
のインストール場所を指定することができます。

  --with-pgsql=DIR
  --with-libsylph=DIR

わかち書きを行わない場合は(英語のみで使用する場合など)、以下のオプションを
指定すると MeCab なしでコンパイルすることができます。この場合は日本語の
検索は正しく行えなくなります。

  --disable-mecab

次に、 Sylph-Searcher 用のユーザとデータベースを作成し(この例では
データベース名 sylph 、所有ユーザ sylphuser で作成)、設定を行います。
データベースのエンコーディングが UTF-8 でなければならないことに注意して
ください。

* PostgreSQL 8.3 の場合
-----------------------

% su postgres
% createuser sylphuser
% createdb -O sylphuser -E UTF-8 sylph
% exit

% psql -U sylphuser -f /usr/local/share/sylph-searcher/sql/create.sql sylph

* PostgreSQL 8.2 の場合
-----------------------

% su postgres
% createuser sylphuser
% createdb -O sylphuser -E UTF-8 sylph
% psql sylph -f /usr/local/pgsql/share/contrib/tsearch2.sql
% psql sylph -c "GRANT ALL ON pg_ts_cfg TO PUBLIC"
% psql sylph -c "GRANT ALL ON pg_ts_cfgmap TO PUBLIC"
% psql sylph -c "GRANT ALL ON pg_ts_dict TO PUBLIC"
% psql sylph -c "GRANT ALL ON pg_ts_parser TO PUBLIC"
(*1)
% exit

% psql -U sylphuser -f /usr/local/share/sylph-searcher/sql/create.sql sylph

(*1) データベースが "C" 以外のロケール($LANG)で初期化されている場合のみ以下を
追加で行ってください:
% psql sylph -c "UPDATE pg_ts_cfg SET locale = '$LANG' where ts_name = 'default'";

使い方
======

1. メッセージをデータベースに取り込む
-------------------------------------

syldbimport コマンドを使用してメッセージをデータベースに取り込みます。
対象となるフォルダを指定する必要があります。任意の形式のメールボックスを
インポートできます(MH, IMAP4, News)。Sylpheedによって管理されていない
MHフォルダもインポートすることができます。

引数で接続するデータベースや使用するデータベース名などを指定できます。
オプションについては次項のコマンドラインオプションを参照してください。

* フォルダを識別子で指定

% syldbimport -d sylph "#mh/メール箱/inbox"

* MHフォルダを直接指定

% syldbimport -d sylph /path/to/MH/Mailbox

* "#mh/メール箱" 以下のフォルダを再帰的にインポート

% syldbimport -d sylph -r "#mh/メール箱"

* DBサーバ host:5431 にユーザ名 sylphuser とパスワード pass で接続

% syldbimport -d sylph -h host -p 5431 -U sylphuser -P pass "#mh/メール箱/another"

* MeCab の辞書が UTF-8 の場合

% syldbimport -d sylph -U sylphuser --mecab-encoding UTF-8 "#mh/メール箱/foo"
% ...

(注) MeCab 辞書のデフォルトのエンコーディングは Unix の場合 EUC-JP 、
     Windows の場合 Shift_JIS を仮定しています。正しいエンコーディングを
     指定せずに取り込みを行った場合、全文検索インデックスが文字化けし、
     正常に検索が行えません。

2. DBの問い合わせのテスト
-------------------------

syldbquery コマンドを使用して簡単な全文検索を行うことができます。
クエリ文字列は単語に分解され、すべての語を含むメッセージがマッチします。

% syldbquery -d sylph -U sylphuser "test"

3. GUI フロントエンドの実行
---------------------------

検索時は主にこの GUI フロントエンドを使用します。

初回起動時に表示される設定ダイアログで、使用するデータベースの設定などを
行ってください。上記のコマンドと同様に引数で指定することもできます。

検索対象のテキストエントリに検索語を入力し、 Enter キーを押すか「検索」
ボタンを押すと検索を実行します。検索結果は中央のリストビューに表示
されます。リストビューでメッセージを選択すると、下部のテキストビューに
メッセージの本文が表示されます。メッセージをダブルクリックするか、スペース
キーあるいは Enter キーを押すと、そのメッセージを Sylpheed 上で新しい
ウィンドウで表示します(Sylpheed 2.4.2以降が必要)。

% sylph-searcher
% sylph-searcher -d sylph -U sylphuser

コマンドラインオプション
========================

syldbimport [オプション]... 対象フォルダ
syldbquery [オプション]... クエリ文字列
sylph-searcher [オプション]...

syldbimport, syldbquery, sylph-searcher のオプション:

  -d dbname			データベース名
  -h hostname			DBサーバのホスト名
  -p port			DBサーバのポート番号
  -U username			データベースのユーザ名
  -P password			データベースのパスワード
  --mecab-encoding encoding	MeCab辞書のエンコーディング
				(デフォルト: Unix: EUC-JP / Win32: Shift_JIS)

syldbimport のオプション:

  -n				存在しないメッセージを削除しない
  -r				再帰的インポート
  -v				冗長な出力
  --exclude foldername		インポート対象から foldername を除外する
				(複数回指定可能)
  --delete			フォルダを DB から再帰的に削除する
