DiKicker を使って社内 Blog を始めてから早いものでもう半月ほど経ち、記事もそれなりにたまってきた。
DiKicker にはキーワードによる串刺し表示機能があるものの、検索機能は自前で持っていないため任意の文字列で検索をすることができない。 これだと過去記事が活用されなくなってしまう。
ということでそろそろ検索エンジンをセットアップすることにした。
同じサーバで Namazu をインストールして過去メールの検索に使用しているが、今回は Hyper Estraier を使ってみることにした。
が選択理由。 今回は自分の社内 Blog だけでなく、自分の立てている Wiki (WiKicker) や他人が立てている PukiWiki、静的な HTML ページなどもまとめて検索できるようにしたいという考えがある。 このため複数のサーバに分散したコンテンツを、クローラでインデックス生成できるというのは魅力的である。
P2P連携機能の方は技術的に面白そうということで。
まずは自分のノート PC 上にセットアップして、いろいろ試してみることにする。 さっそく apt-get で Hyper Estraier をパッケージインストール。
estmaster でノードマスタを起動し、ユーザ設定とノード作成を行う。
で次に Web クローラ estwaver の設定をして、ノート PC ローカルの Web サーバのコンテンツをインデックス化してみる。
で、検索。
あれ?
検索結果件数が 0。よくみるとインデックスされている文書が 0 だ。 確かに estwaver がモリモリ fetch して登録しているようなのだが……。
しこたま悩んだ末、Debian パッケージの Hyper Estraier は 1.2.5 でこのバージョンの estmaster は ノードサーバへの登録機能がまだないということにようやく気がついた。
とほほ。
ということなので、Hyper Estraier 1.2.7 をソースからインストールすることにした。 Debian パッケージの QDBM だと古いので、こちらもあわせてインストール。
今回はパッケージ化せずに /usr/local/hyperestraier-1.2.7 に、とりまとめてインストールすることにしておく。
wget http://qdbm.sourceforge.net/qdbm-1.8.58.tar.gz tar zxvf qdbm-1.8.58.tar.gz cd qdbm-1.8.58 ./configure --enable-zlib --prefix=/usr/local/hyperestraier-1.2.7 make make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.2.7.tar.gz tar zxvf hyperestraier-1.2.7.tar.gz cd hyperestraier-1.2.7 PKG_CONFIG_PATH=/usr/local/hyperestraier-1.2.7/lib/pkgconfig ./configure --prefix=/usr/local/hyperestraier-1.2.7 make make check make install
インストール完了。
最初インストールしたものを実行すると落ちて何だろうと思っていた。 これについては deb パッケージでインストールした関連パッケージを purge してビルドし直しインストールしたら問題なく動くようになった。
メデタシメデタシ。
明日は会社のサーバでも設定しよう。
昨日の自分のノート PC で Hyper Estraier の試用を踏まえて、社内のサーバに Hyper Estraier を設置する。
いまだ Red Hat Linux 8.0 であるサーバに、昨日と同様に Hyper Estraier 1.2.7 を /usr/local/hyperestraier-1.2.7 以下にインストール。
この環境では ./configure 時に iconv が見つからないため、最初に libiconv 1.9.2 を /usr/local/hyperestraier-1.2.7 に入れ、続けて QDBM、Hyper Estraier の順にインストール。
estwaver + estmaster でクローリング + 文書登録も問題なく完了。
で検索をしようと http://ホスト:1978/node/ノード名/search_ui にアクセスするも、検索フォームを含め何も表示されない。あれ? 他の管理ページは問題なく表示されるのに search_ui だけ駄目。
GNU Wget だときちんと HTML を GET できるのだけれど、Firefox や Internet Explorer からだと駄目である。
いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。
以下のような感じでクロールし、登録することにした。
特定の Wiki や Blog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。
後は使いながら微調整していくこととしよう。
入社してから社内情報共有の一環として
といろいろ手をつけてきた。 次に狙っているのは SBS である。
Wiki や社内 Blog に書くほどではないけれどメモ程度にブックマークしておきたい URL を、気軽に晒せるようにするのが目的。
はてなブックマークのような公開サービスは
という点から、今回は利用できない。
ということで社内に SBS を設置したい考えている。
最初は Scuttle にしてみようと思ったのだが、PHP ベースであるのと MySQL を使うというところで気遅れしている。 いや SQLite でもいけそうらしいということで、実は Debian でちょっと試そうとしたのだが、テーブル作成の SQL が MySQL 用で、これを修正するのが面倒なので断念。
次に Perl + SQLite で動く Rubric を試してみることにした。
Rubric は CPAN にあがっているので CPAN.pm から install Rubric でインストールできる。 モジュールをインストールしたら、セットアップ。
これで OK。
rubric.cgi にアクセスしページが表示されればひとまず成功。 メニューの「register」から、ユーザ登録する。 確認用のメールが届くはずだが、面倒くさいのでこれを待たずに
rubric user -a ユーザ名
でアクティベートする。
Rubric の HTML フォームからのブックマーキングは成功し、うまく動いているようである。 ただし、日本語の処理はどうもよくない。 title や description が化ける。 惜しい。
基本的には UTF-8 ベースでうまくいきそうなのだが、どこかで化けるようだ。 ちょっと手を入れれば直るかなと思ったが、化けるところと化けないところとがあるので逆に直す場所が多そうなので今日はやめておくことにした。
とりあえず Rubric はおいておいて、他のものも試してみることにするか。
Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。
Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。
ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.org や Microsoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。
ローカルファイルの検索は
メール | Mew 4 での検索(with Namazu)。 |
nDiki 記事 | howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。 |
メモ | howm。 |
開発中のソースコード | Emacs の grep-find でだいたい事足りる。たまに ack。 |
仕事のメモ | できるだけ社内 Wiki か社内 Blog に書いておいて Hyper Estraier。 |
その他 | grep 程度。 |
といった感じかな。
それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。
問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。
そんなファイルを見つけるのが楽になれば、導入効果あり。
まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て
CONFIG_INOTIFY=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS_XATTR=y
となっていることを確認。
/etc/fstab を編集し、
/dev/hda4 /home ext3 defaults 0 2
を
/dev/hda4 /home ext3 defaults,user_xattr 0 2
に変更する。書き換えたら、
mount -o remount /home
でマウントしなおす。
Debian パッケージでインストール
一般ユーザで
beagled
で起動する。停止は
beagle-shutdown
で。
beagle-settings
で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。
beagle-search
で検索 UI を起動し検索してみる。 日本語も OK のようである。
GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。
xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。
設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。
デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。
日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。
Gmail は2004年12月に招待してもらって登録していたのだが、アカウントは Google の各種サービス用として使っていたものの、メールボックスはほぼ全く使用していなかった。 なんだかんだいって抵抗感があった訳で。
しかし、
ということからメールボックス Gmail に集約してしまうことにした。
やった事は以下。
pwgen で自動生成したパスワードを使っていたのだが、今後入力する機会が増えるので覚えられるものに変更。
普段使っている MUA である Mew のバージョンを 4 から 5 にバージョンアップ (Debian sid の Debian パッケージが上がった時に、ホールドしたままだった)。
もれなく k-/ が Namazu から Hyper Estraier になっていた。
「Gmail から直接」および「Gmail の SMTP サーバ経由」で普段使っているメールアドレスを使って送信できるようにアカウントを登録。
Web の設定画面で追加するとメールで確認コードが送られてくるので、それを使って有効化する。
Gmail 側で POP を有効にした後、fetchmail で fetch できるようにする。
defaults no mimedecode pass8bits poll pop.gmail.com protocol pop3 user xxx@gmail.com password xxx ssl fetchall
SSL を使用して fetch できるようしておく。
設定を始めるまでは「POP3 で Gmail アカウント使うのどうよ」と思っていたけれど、SSL 経由なのでちょっと安心した。
POP 後 Gmail 側ではアーカイブに移動するようしておく。
今まで SMTP over SSH でホスティングサービス経由等で送っていたものを、Gmail に TARTTLS を使って送れるように設定する。
mew-config-alist の中で
("default" ("user" . "naney") ("mail-domain" . "naney.org") ("smtp-server" . "smtp.gmail.com") ("smtp-user" . "xxx@gmail.com") ("smtp-ssl" . t))
送信メールアドレスは user と mail-domain で設定。Gmail のアカウント名は smtp-user で設定。 smtp-ssl も t にしておく。
その他メールアドレス毎に経路を変えて送ったりしていたのだが全部同様の設定にして Gmail 経由にする。
今まで Dcc で自分宛にコピーを送って管理していたのだが、Gmail では自分が SMTP 経由で送信したメールは POP できないらしい。 げっ。
ということで Fcc を
(setq mew-fcc "+sent")
から
(setq mew-fcc "+sent,+inbox")
に変更して、sent/ 以外に inbox/ にも複製を作るようにして対処。
普段使っている各メールアドレスのメールボックスから、全て Gmail へ転送するように設定。 たまっていた分は今まで通りの方法で fetch してクリアしておく。
Gmail カスタムボタンを表示するように変更。 ツールバーから Gmail にアクセスできるようにしておく。
Gmail アカウントを登録。 Google デスクトップで Gmail 上のメールを検索できるようにしておく。
試しに使ってみる。
モバイル Gmail から送られるメールの From: は Gmail でデフォルト設定したもので固定らしい。 ちょっと融通が効かない。
ま、プライベートのメールはiモードメールで送ってしまっても良いので、Gmail のデフォルトのメールアドレスを仕事用のに設定しておくことで対応しよう。
これで大体設定完了。
メリットは以下。
Gmail で言うところのスレッドについては、ちょっと慣れが必要そうだな。
なにはともあれ、一気に移行してしまった。 細かい所で違和感がまだあるけれども、いずれ慣れるだろう。 きっとその時は便利に感じるに違いない。
ようやくこれで本当の Gmail ユーザだ。
社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。
前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ。
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz tar zxvf qdbm-1.8.77.tar.gz cd qdbm-1.8.77 ./configure --enable-zlib --prefix=$HOME/local/hyperestraier-1.4.13 make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz tar zxvf hyperestraier-1.4.13.tar.gz cd hyperestraier-1.4.13 PKG_CONFIG_PATH=$HOME/local/hyperestraier-1.4.13/lib/pkgconfig ./configure --prefix=$HOME/local/hyperestraier-1.4.13 make make check make install
前回 /usr/local/var/lib/hyperestraier/estwaver に保存するようにしていたので、今回もそそれはそのままで。 クローラのルートにある _conf は作り直しの際に間違えて消してしまいそうになるので、ホームの etc においておいてシンボリックリンクをはっておく。 _conf は以前に作っておいたものを利用。
mkdir /usr/local/var/lib/hyperestraier/estwaver $HOME/local/hyperestraier-1.4.13/bin/estwaver init /usr/local/var/lib/hyperestraier/estwaver rm /usr/local/var/lib/hyperestraier/estwaver/_conf ln -s $HOME/etc/hyperestraier/_conf /usr/local/var/lib/hyperestraier/estwaver/_conf $HOME/local/hyperestraier-1.4.13/bin/estwaver crawl -revcont /usr/local/var/lib/hyperestraier/estwaver
cd $WEBDIR/search/hyperestraier cp $HOME/local/hyperestraier-1.4.13/libexec/estseek.cgi . chmod 755 estseek.cgi cp $HOME/local/hyperestraier-1.4.13/share/hyperestraier/locale/ja/estseek.* .
で estseek.conf を編集。indexname を /home/naney/local/hyperestraier-1.4.13/estwaver/_index に。その他好みにあわせて設定を変更。
前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 1日1回以下のスクリプトを実行するように設定。
#!/bin/sh PREFIX=/home/naney/local/hyperestraier-1.4.13 VARDIR=/usr/local/var/lib/hyperestraier test -e $VARDIR/estwaver-copy && exit cp -a $VARDIR/estwaver $VARDIR/estwaver-copy $PREFIX/bin/estwaver crawl -revcont $VARDIR/estwaver-copy $PREFIX/bin/estcmd inform $VARDIR/estwaver-copy/_index || exit rm -rf $VARDIR/estwaver mv $VARDIR/estwaver-copy $VARDIR/estwaver
リクエストしてくれた人、検索できるようになったから使ってね。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。