※ 2010/11/06 mkgrendbの使い方に不足があったので追記しました。
gren 0.3.0 にウェブベースのソースコード検索エンジンを追加しました。
ローカルにあるソースコードを元にインデックスを作成し、ブラウザを使って素早く検索することが出来ます。
特徴
手軽な動作環境
groongaとrubyの動く環境であれば動作します。データベースはファイルベースなので、MySQL等は必要ありません。Rackで動かしているのでサーバー上で動かすのも簡単(なはず)です。
コマンドラインでも、ウェブインターフェースでも。
生成されたデータベースは''grendb''と共有可能です。一つのインデックスで、コマンドラインアプリとウェブアプリの二つのインターフェースを使い分けることが出来ます。
インストールはgemコマンドで一発
sudo gem install gren
rroonga, groongaも一緒にインストールされます。
Windowsだと下記の手順でインストール可能ですが、groonga周りで上手く動かないかもしれません。grenは問題なく使えます。
Windows
# プラットフォームを指定してWindows用のrroongaをインストールする gem install rroonga -v 1.0.1 --platform x86-mingw32 # その後、grenをいつも通りインストール gem install gren
grenって?
grepの置き換えを目指し、最初にgrenを作りました。
その後、たくさんのファイルを素早く検索するために mkgrendb、grendbを作り、GUIでも検索したくなって、今回grenwebを作りました。
grenは、手元のソースコードを様々な方法で検索するためのツールセットになりつつあります。
gren | ローカルファイルを素早く検索、grepの置き換えを目指す |
mkgrendb | ローカルファイルを元にgroongaデータベースを生成する |
grendb | コマンドラインアプリ、groongaデータベースの情報を利用して、大量のファイルから目的の情報を素早く検索出来る |
grenweb | ブラウザから検索出来るウェブアプリ、groongaデータベースの情報を利用して、大量のファイルから目的の情報を素早く検索出来る |
使い方
データベース生成用のyamlファイルを書く
私は~/grendb/grendb.yamlとかに置いてます。
yamlファイルの横に~/grendb/grendb.db みたいなファイルがいっぱい出来るので、ディレクトリを掘っておいた方がいいかもしれません。
# # grendb : データベース作成用YAML # # 検索対象となるディレクトリ directory: - ~/Documents/git-manual-jp/ - ~/Documents/gren - ~/Documents/gren-html/ - ~/Documents/tidtools - ~/Documents/MacOS - ~/Documents/iPhone - ~/Documents/junk - /opt/local/lib/ruby/gems/1.8/gems/rroonga-1.0.1
mkgrendb
mkgrendbコマンドを実行すると、検索対象となるディレクトリ以下を探索し、データベースが生成されます。
ここまでくれば後一歩!!
% mkgrendb ~/grendb/grendb.yaml input_yaml : /Users/ongaeshi/grendb/grendb.yaml found. create : /Users/ongaeshi/grendb/grendb.db created. open : /Users/ongaeshi/grendb/grendb.db open. add_file : /Users/ongaeshi/Documents/git-manual-jp/COPYING add_file : /Users/ongaeshi/Documents/git-manual-jp/Documentation/asciidoc.conf . . . add_file : /opt/local/lib/ruby/gems/1.8/gems/rroonga-1.0.1/test/test-view.rb add_file : /opt/local/lib/ruby/gems/1.8/gems/rroonga-1.0.1/text/expression.rdoc add_file : /opt/local/lib/ruby/gems/1.8/gems/rroonga-1.0.1/text/TUTORIAL.ja.rdoc input_yaml : /Users/ongaeshi/grendb/grendb.yaml (6.78sec) output_db : /Users/ongaeshi/grendb/grendb.db* files : 781 updates : 0
今回の修正でデータベースの形式を変えたため、古いバージョンのgrenを使っている人はデータベースの再生成を行う必要があります。
% mkgrendb --full --ddb(or データベース名)
環境変数 GRENDB_DEFAULT_DB を設定しておくと、--ddbオプションでデータベースを指定したことになり便利です。grendb、grenwebでデータベースを指定する手間が省けます。
export GRENDB_DEFAULT_DB=~/grendb/grendb.db
grenweb
GRENDB_DEFAULT_DB が設定されていれば、
# http://localhost:9292/ % grenweb
で自動的にブラウザが起動し、grenのホームページが表示されるはずです。
※ ブラウザが起動したのにこの画面がが表示されない場合、一度リロードしてみて下さい。
ポート番号やデータベースファイルを指定することも出来ます。
# ポート番号1234で起動 # http://localhost:1234/ % grenweb -p 1234 # ~/dummy/database.db にあるデータベースを検索 # http://localhost:9292/ % grenweb ~/dummy/database.db
検索するとこんな感じになります、早い!!
詳しい使い方はヘルプをどうぞ。
動作報告、バグ報告、感想お待ちしてます。
ブログのコメントやTwitter等にお願いします。
過去記事一覧
- gren - 0.2.4、grendbの検索機能を強化 - おんがえしの日記
- 気がつけば0.2.3、groonga, rroongaと連携して超高速検索をサポート!!
- 0.1.3は文字コード類推検索と、絞込み検索機能を追加 - おんがえしの日記
- バージョン 0.1.2 リリース!!
- 2010/08/05のやったこと - マルチキーワード検索、現在位置だけを検索(--this)
- grenを公開したら思った以上に反響があってびっくり、今後の展開
- gren - 次世代grepを目指したコマンドラインツール
ホームページ → 古いバージョンのままですが、近いうちにリニューアルします(汗)