Rubyで簡単に全文検索エンジンが作れるGrnMiniを作ったの続きです。
GrnMiniを使って小さな検索エンジンを書いてみました。
全1ファイル、154行です。検索、マッチ個所の表示(スニペット)、ページネーション、ファイル本体の表示など検索エンジンに必要な一通りの機能が入っています。
↑はあんスマさんの青空文庫のアーカイブをインデックス化して検索している所です。
インストール
grn_miniをインストールします。
$ gem install grn_mini
sinatraが入っていない人はそちらもインストールします。
$ gem install sinatra
grn_mini/samplemini-directory-search.rbを適当な場所にダウンロードします。rawからコピーするのが簡単です。
もしくはgrn_mini
をgitチェックアウトしてもよいです。
$ cd ~/Documents $ git clone https://github.com/ongaeshi/grn_mini.git
以後はチェックアウトした~/Documents/grn_mini/sample/mini-directory-search.rb
を使って説明します。
使い方
スクリプトを実行した場所以下全てのファイルを検索対象とするので、検索インデックスを作りたいディレクトリに移動します。
ファイル数が多いと時間がかかるので、最初は小さめのディレクトリで実験するのがおすすめです。
$ cd ~/Documents/foo
mini-directory-search.rb
を実行します。データベースが生成された後(最初の一回だけです。)、webアプリが立ち上がります。
$ ruby ~/Documents/grn_mini/sample/mini-directory-search.rb Create database .. Input complete : 15 files == Sinatra/1.4.2 has taken the stage on 4567 for development with backup from Thin >> Thin web server (v1.5.1 codename Straight Razor) >> Maximum connections set to 1024 >> Listening on localhost:4567, CTRL+C to stop
http://localhost:4567/
をブラウザで開いて以下のような画面が出たら成功です。
以上でインストールは完了です。思うがままに検索して下さい。検索コマンドは8.10.1. クエリー構文をどうぞ。カラム名はソースコードをどうぞ。
生成した検索用データの削除
スクリプトを実行した位置に作られるmini-directory-search.db*
という名前のファイルを全て消して下さい。
$ cd ~/Documents/foo $ rm mini-directory-search.db*