nDiki : Hyper Estraier

Hyper Estraier

全文検索システム。 クローラを標準でもっている。 GNU GPL

2006年5月31日 (水)

Debian GNU/LinuxHyper Estraier 1.2.7 を野良インストールする

DiKicker を使って社内 Blog を始めてから早いものでもう半月ほど経ち、記事もそれなりにたまってきた。

DiKicker にはキーワードによる串刺し表示機能があるものの、検索機能は自前で持っていないため任意の文字列で検索をすることができない。 これだと過去記事が活用されなくなってしまう。

ということでそろそろ検索エンジンをセットアップすることにした。

同じサーバで Namazu をインストールして過去メール検索に使用しているが、今回は Hyper Estraier を使ってみることにした。

  • Web クローラが付属されていること
  • P2P連携機能があること

が選択理由。 今回は自分の社内 Blog だけでなく、自分の立てている Wiki (WiKicker) や他人が立てている PukiWiki、静的な HTML ページなどもまとめて検索できるようにしたいという考えがある。 このため複数のサーバに分散したコンテンツを、クローラでインデックス生成できるというのは魅力的である。

P2P連携機能の方は技術的に面白そうということで。

Debian GNU/Linux でのテスト

まずは自分のノート 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 に、とりまとめてインストールすることにしておく。

QDBM
 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
Hyper Estraier
 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 してビルドし直しインストールしたら問題なく動くようになった。

メデタシメデタシ。

明日は会社のサーバでも設定しよう。

[ 5月31日全て ]

2006年6月1日 (木)

Hyper Estraier で社内 Web コンテンツ検索

昨日の自分のノート PCHyper 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 でクローリング + 文書登録も問題なく完了。

search_ui がうまく動かない。

検索をしようと http://ホスト:1978/node/ノード名/search_ui にアクセスするも、検索フォームを含め何も表示されない。あれ? 他の管理ページは問題なく表示されるのに search_ui だけ駄目。

GNU Wget だときちんと HTML を GET できるのだけれど、FirefoxInternet Explorer からだと駄目である。

いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。

インデックスの方針

以下のような感じでクロールし、登録することにした。

  • 社内メイン Wiki、自分の社内 Blog、公開 Web サイトのトップページをクロールの種文書とする。
  • それと社内メイン Wiki の更新情報ページも種文書とする。
  • 社内のサーバ、および公開 Web サイトのみクロールするように allowrx、denyrx を設定。
  • Wiki の編集ページ等をクロールしないように denyrx を設定。
  • 1日1回深夜に cron でインデックスを更新。
  • revisit は3日に設定。
    • いくつかの種文書は -revcont 付きで estwaver を実行しても毎回巡回して欲しいのだけれど、それはいまのところできないようだ。

特定の WikiBlog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。

後は使いながら微調整していくこととしよう。

[ 6月1日全て ]

2006年7月22日 (土)

Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合

入社してから社内情報共有の一環として

といろいろ手をつけてきた。 次に狙っているのは SBS である。

Wiki社内 Blog に書くほどではないけれどメモ程度にブックマークしておきたい URL を、気軽に晒せるようにするのが目的。

はてなブックマークのような公開サービスは

  • タグ・コメント・傾向などが外に出るのはよろしくない
  • あるいは、それを気にして活用されない
  • そもそも社内リソースについてはブックマークできない

という点から、今回は利用できない。

ということで社内に SBS を設置したい考えている。

最初は Scuttle にしてみようと思ったのだが、PHP ベースであるのと MySQL を使うというところで気遅れしている。 いや SQLite でもいけそうらしいということで、実は Debian でちょっと試そうとしたのだが、テーブル作成の SQLMySQL 用で、これを修正するのが面倒なので断念。

次に Perl + SQLite で動く Rubric を試してみることにした。

Rubric 0.140

Rubric は CPAN にあがっているので CPAN.pm から install Rubric でインストールできる。 モジュールをインストールしたら、セットアップ。

  1. CGI プログラムを動かすディレクトリを決める (以下 $RUBRIC)
  2. Rubric tarball の bin/rubric.cgi を $RUBRIC/ にコピーし、必要なら #! を修正する。
  3. Rubric tarball の templates ディレクトリを $RUBRIC/ にコピーする。
  4. Rubric tarball の style/rubric.css を $RUBRIC/ にコピーする。
  5. Rubric tarball の etc/rubric.yml を $RUBRIC/ にコピーして環境に合わせて編集する。
  6. データベースを初期化する。0.140 には makedb.pl が同梱されていないので、0.13_01 の bin/makedb.pl を参考に perl -MRubric::DBI::Setup -e 'Rubric::DBI::Setup->setup_tables' で初期化する。ちなみに 0.140 付属の rubric コマンドで rubric db -s してみたが、これはうまく動かなかった。
  7. 必要に応じて .htaccess を作成・編集し rubric.cgi を CGI プログラムとして実行できるようにする。またその他アクセスされたくないファイルを deny するようにしておく。

これで OK。

rubric.cgi にアクセスしページが表示されればひとまず成功。 メニューの「register」から、ユーザ登録する。 確認用のメールが届くはずだが、面倒くさいのでこれを待たずに

 rubric user -a ユーザ名

でアクティベートする。

Rubric の HTML フォームからのブックマーキングは成功し、うまく動いているようである。 ただし、日本語の処理はどうもよくない。 title や description が化ける。 惜しい。

基本的には UTF-8 ベースでうまくいきそうなのだが、どこかで化けるようだ。 ちょっと手を入れれば直るかなと思ったが、化けるところと化けないところとがあるので逆に直す場所が多そうなので今日はやめておくことにした。

とりあえず Rubric はおいておいて、他のものも試してみることにするか。

[ 7月22日全て ]

2006年8月8日 (火)

Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索

Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。

Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。

ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.orgMicrosoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。

ちなみに今まで

ローカルファイルの検索

メールMew 4 での検索(with Namazu)。
nDiki 記事howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。
メモhowm
開発中のソースコードEmacsgrep-find でだいたい事足りる。たまに ack。
仕事のメモできるだけ社内 Wiki社内 Blog に書いておいて Hyper Estraier
その他grep 程度。

といった感じかな。

それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。

問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。

そんなファイルを見つけるのが楽になれば、導入効果あり。

インストールして試してみる

Linux kernelinotify を有効にする

まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て

 CONFIG_INOTIFY=y
 CONFIG_EXT2_FS_XATTR=y
 CONFIG_EXT3_FS_XATTR=y

となっていることを確認。

/home の extended attributes を有効にする。

/etc/fstab を編集し、

 /dev/hda4 /home ext3 defaults 0 2

 /dev/hda4 /home ext3 defaults,user_xattr 0 2

に変更する。書き換えたら、

 mount -o remount /home

でマウントしなおす。

Beagle のインストール

Debian パッケージでインストール

Beagle を起動

一般ユーザで

 beagled

で起動する。停止は

 beagle-shutdown

で。

Beagle を設定
 beagle-settings

で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。

検索してみる
 beagle-search

検索 UI を起動し検索してみる。 日本語も OK のようである。

GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。

KDE 系のクライアントもあるので別途いろいろ確認

Firefox 拡張

xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。

設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。

感想

デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。

日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。

[ 8月8日全て ]

2007年8月8日 (水)

メールボックスを Gmail に集約

Gmail2004年12月に招待してもらって登録していたのだが、アカウントは Google の各種サービス用として使っていたものの、メールボックスはほぼ全く使用していなかった。 なんだかんだいって抵抗感があった訳で。

しかし、

  • ホスティングサービスで利用しているメインのメールボックスが1アカウント10MBで、数日 fetch できないと溢れてしまう。PHS を解約した今、帰省の時などは fetch できない状況になりヤバイ。
  • パケ・ホーダイにしたのを機にモバイル Gmail で外出先でも仕事関連のメールをチェックできるようにしたい。

ということからメールボックス Gmail に集約してしまうことにした。

移行作業

やった事は以下。

アカウントのパスワードを変更

pwgen で自動生成したパスワードを使っていたのだが、今後入力する機会が増えるので覚えられるものに変更。

メーラ (Mew) のバージョンアップ

普段使っている MUA である Mew のバージョンを 4 から 5 にバージョンアップ (Debian sidDebian パッケージが上がった時に、ホールドしたままだった)。

もれなく k-/ が Namazu から Hyper Estraier になっていた。

Gmail に普段使っているメールアドレスを登録

Gmail から直接」および「GmailSMTP サーバ経由」で普段使っているメールアドレスを使って送信できるようにアカウントを登録。

Web の設定画面で追加するとメールで確認コードが送られてくるので、それを使って有効化する。

Gmail から POP3 でメールをローカルに取れるように設定

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 側ではアーカイブに移動するようしておく。

Mew から GmailSMTP サーバ経由でメールを送れるようにする

今まで 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 経由にする。

Mew から自分宛のコピーを Dcc から Fcc に変更

今まで Dcc で自分宛にコピーを送って管理していたのだが、Gmail では自分が SMTP 経由で送信したメールは POP できないらしい。 げっ。

ということで Fcc を

 (setq mew-fcc "+sent")

から

 (setq mew-fcc "+sent,+inbox")

に変更して、sent/ 以外に inbox/ にも複製を作るようにして対処。

メールボックスから Gmail へ転送設定

普段使っている各メールアドレスのメールボックスから、全て Gmail へ転送するように設定。 たまっていた分は今まで通りの方法で fetch してクリアしておく。

Google ツールバーの設定を変更

Gmail カスタムボタンを表示するように変更。 ツールバーから Gmail にアクセスできるようにしておく。

Google Desktop (Linux 版)の設定を変更

Gmail アカウントを登録。 Google デスクトップGmail 上のメール検索できるようにしておく。

iモードから、モバイル Gmailへアクセスしてみる

試しに使ってみる。

モバイル Gmail から送られるメールの From: は Gmail でデフォルト設定したもので固定らしい。 ちょっと融通が効かない。

ま、プライベートのメールiモードメールで送ってしまっても良いので、Gmail のデフォルトのメールアドレスを仕事用のに設定しておくことで対応しよう。

これで大体設定完了。

移行したことによるメリット

メリットは以下。

  • メールボックスの溢れの心配がなくなる。
  • Gmail spam 機能が使える。- ローカルで bsfilter 使っているけれども、それよりも強力 (多分)。
  • Web ブラウザからメール送受信ができる。- 自分の端末以外でパスワードを入力するのが怖いのと、自分の端末があるなら Mew から送受信してしまうからサブで。
  • iモードからメールをチェックできる。

Gmail で言うところのスレッドについては、ちょっと慣れが必要そうだな。

移行したことによるデメリット

  • メールがローカルまで落ちてくるのが遅くなる。- 各メールボックスからの転送分のタイムラグがある。さらに Gmail では受信してもすぐ POP できるわけではないようだ。なので、Web ブラウザ上で受信を確認していてもそれに対してローカルの Mew で引用返信がすぐできなくなってしまった。
  • リモートサーバ上にメールを置いておくことに対する不安感がある。
  • iモードからメールをチェックできる。見なくてもいい時に読んでしまう可能性が。

なにはともあれ、一気に移行してしまった。 細かい所で違和感がまだあるけれども、いずれ慣れるだろう。 きっとその時は便利に感じるに違いない。

ようやくこれで本当の Gmail ユーザだ。

今日のさえずり: Mew 4 から Mew 5 にしたら Namazu から Hyper Estraier になってた

[ 8月8日全て ]

2008年5月18日 (日)

今日のさえずり - に「ぱふぱふ」について説明した

2008年05月14日

  • 13:12 SKKIME が変換しなくなった。辛い。
  • 13:38 SKKIME 1.0 のままだったので、1.5 を入れてこちらを使うようにした。
  • 14:14 気がついたら社内サーバの Hyper Estraier が Error: the index is missing or broken.
  • 16:33 給与改定キタ。

2008年05月15日

  • 10:11 同僚のイチゴに水をやった。
  • 19:50 しばらく単体テストがレッドだったコードを修正してグリーンに。ようやくコミットできてスッキリ。[mb]

2008年05月16日

  • 09:31 聴く CD を換えようとケースを出した電車の中の前の人、中身ほとんど CD-R だった。[mb]
  • 19:48 PRADA Phone のモック見てきた。どのあたりが PRADA なのか不明。LG 端末以上の何があるのだ?[mb]

2008年05月17日

  • 13:01 加湿器今シーズンはおしまいにする。掃除してフィルター乾燥運転中。[mb]
  • 14:56 マックフルーリー抹茶&オレオ食べようと思ったら品切れ。[mb]

2008年05月18日

  • 01:45 PC2M の「セッションの復元機能」設定した。これは便利。
  • 12:46 NEW MEGALOPOLIS のゴムが伸びてだらしなかったので、ハーネスの中で結び直した。そのうち交換したい。
  • 14:11 に「ぱふぱふ」について説明した。
[ 5月18日全て ]

2009年7月3日 (金)

全文検索システム Hyper Estraierアップデート

社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。

前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ。

QDBM

 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

Hyper Estraier

 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

検索インタフェース CGI プログラムを配置

 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 に。その他好みにあわせて設定を変更。

cron 設定

前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 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

リクエストしてくれた人、検索できるようになったから使ってね。

今日のさえずり: Twitter とシンクロして全部観たかったけれども

2009年07月03日

  • 09:39 ポニョ DVD をちょっと欲しがっている自分。 [mb]
  • 12:52 Hyper Estraier を 1.2.7 から 1.4.13 にした。 *P3
  • 19:41 えー、小雨降ってきた。 #Akihabara L:秋葉原 [mb]
  • 26:39 2009年7月3日の歩行: 4668歩、3.59km、40分、5.35km/h、消費 180.2kcal、脂肪燃焼 25.8g、2.6エクササイズ。 *P3
  • 26:49ヱヴァンゲリヲン新劇場版:序」は良い子なので2回目の CM (9:26 頃)までで我慢した。 *P3
  • 26:51 まあできれば、Twitter とシンクロして全部観たかったけれども。 *P3
  • 27:24 寝る。 *P3
[ 7月3日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.023092s / load averages: 0.17, 0.33, 0.36