この情報は古い可能性があります!
Namazuよりも高性能(?)という噂のhyperestraierを使った
検索エンジンの構築をやってみます。
といってもぶっちゃけ公式HPのものを見てやりながら書いているので
ほとんど変わらないですね。。。
注: 作者がTokyo Cabinet、Kyoto Cabinetへの作成に注力しているようで、実質HyperEstraierは開発停止です。
HP http://hyperestraier.sourceforge.net
HP http://fallabs.com/ に変更
Nutchでもやるかなぁ。Apacheもなんか出してるし暇ができたらやってみますか。
必要なもの
- libiconv : 文字コード変換。バージョン1.9.1以降(glibcにも同梱)。
- zlib : 可逆データ圧縮。バージョン1.2.1以降。
- QDBM : 組み込み用データベース。バージョン1.8.68以降。
恐らくlibiconvとzlibは入っているため、QDBMをインストールします。
また、分かち書き?にめかぶをつかいます。
QDBMのインストール
cd /usr/local/src
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
make
make install
Mecabのインストール
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.97.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/mecab/mecab-jumandic-5.1-20070304.tar.gz
tar zxvf mecab-0.97.tar.gz
cd mecab-0.97
./configure --with-charset=utf8
make
make install
cd ../
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf-8
make
make install
cd ../
tar zxvf mecab-jumandic-5.1-20070304.tar.gz
cd mecab-jumandic-5.1-20070304
./configure --with-charset=utf-8
make
make install
hyperestraierのインストール
cd /usr/local/src
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
tar zxvf hyperestraier-1.4.13.tar.gz
cd hyperestraier-1.4.13
./configure --enable-mecab
make
make install
ローカルのみの検索システムを構築
mkdir /usr/local/hyperestraier
cd /usr/local/hyperestraier
estcmd gather -il ja -sd momo-i /usr/local/apache/htdocs
gatherはインデックス生成のオプションです。
- il jaは文字コード判定に日本語を優先させるという意味です。
- sdはファイルの作成日時と更新日時をインデックスに記録するという意味です。
実行すると、進捗状態のログメッセージが出てから、
momo-iというディレクトリが作成されます。
このディレクトリがインデックスです。
インデックスの作成に必要な手順はこれだけです。
検索用スクリプトの配置
cp /usr/local/libexec/estseek.cgi /usr/local/apache/cgi-bin
cp /usr/local/share/hyperestraier/locale/ja/* /usr/local/apache/cgi-bin
検索用のコンフィグ設定
cd /usr/local/apache/cgi-bin
vi estseek.conf
変更点のみ
indexname: momo-i
replace: ^file:///usr/local/apache/htdocs/{{!}}http://localhost/
http://localhost/cgi-bin/estseek.cgiにアクセスをして
検索が出来ることを確認
インデックスの更新作業
cd /usr/local/hyperestraier
estcmd gather -cl -il ja -sd -cm momo-i /usr/local/apache/htdocs
元のファイルがなくなったりしたときとかに検索対象からも削除する
estcmd purge -cl momo-i
インデックスの最適化
estcmd optimize momo-i
削除と最適化は1週間にいっぺん程度で十分です。
Webクローラを使ってみる
検索するならGoogleとかYahooとかあるますが、検索ワード入れても
実際にこれって言うのが見つからないときってあるますよね。
ということで、自分の持ってるお気に入りとかを自動巡回させて特定のジャンルとかの
Web検索エンジンを設定するます。(hyperestraierはインストール済みとして進めます)
クローラのルートディレクトリの作成
cd /usr/local/hyperestraier
estwaver init test
initするとtestディレクトリ配下に以下のディレクトリ・ファイルが作成されます。
_conf : 設定ファイル。
_log : ログファイル。クローラのイベントログを記録します。
_meta : メタデータのデータベースファイル。重複起動防止のロック機構も兼ねます。
_queue : 巡回先のプライオリティキューのデータベースファイル。
_trace/ : 巡回記録のデータベースディレクトリ。
_index/ : インデックスディレクトリ。
_tmp/ : テンポラリファイルを入れるディレクトリ。
次にクローラの設定をします。
www.example.comとtest.example.comを巡回する設定を入れますが、
example.comドメイン以外のドメインへのリンクを制御するためallowrxを使って
example.comドメイン以外のドメインへはアクセスをしないようにします。
/usr/local/hyperestraier/test/_conf
seed: 1.0|http://www.example.com/
seed: 1.0|http://test.example.com/
allowrx: ^http://[^/]*\.example.com/
設定が終わったら以下のコマンドで巡回をして見ましょう。
estwaver crawl -revcont /usr/local/hyperestraier/test
オプションにつけてる-revcontは以前に収集した文書の
再取得を行った後にクローリングを継続するので便利です。
巡回が終了したらhttp://localhost/cgi-bin/estseek.cgiへアクセスをして、
検索が出来ることを確認します。
後は定期的にクーロンで実行をするように設定しておけば問題なしです。
注意点としては巡回中は検索が出来なくなるため、巡回させる場合は
ルートディレクトリをコピーして、コピーしたもので巡回後元に戻すという作業をするといいです。
参考までにうちで使っていたスクリプトです。(現在停止中)
#!/bin/bash
command="/usr/local/bin/estwaver crawl -revcont"
dir="/usr/local/hyperestraier/test"
tmpdir="/usr/local/hyperestraier/test.tmp"
if [ ! -r $tmpdir ]; then
cp -r $dir $tmpdir
$command $tmpdir
rm -rf $dir
mv $tmpdir $dir
fi
if [ `date +%u` == "7" ]; then
/usr/local/bin/estcmd optimize $dir/_index
fi
アップグレード
アップグレードするときは一旦アンインストールを走らせないと
テストでエラーになります。
cd /usr/local/src/hyperestraier-x.x.xx
make uninstall
cd /usr/local/src/qdbm-x.x.xx
make uninstall
後はまた適当にやりますか。
コメントを追加