HAYASHI Kentaro
hayas****@clear*****
2013年 9月 29日 (日) 22:13:02 JST
今日は肉の日ですね。 まず、二つお知らせがあります。 一つ目は、隔週連載groonga 最終回の紹介です。 これまでも、groonga.orgにて利用事例 http://groonga.org/ja/users/ を 紹介してきましたが、それとは別に、http://gihyo.jp/にてgroonga関連の記事の連載を 隔週連載groongaとしておよそ半年間続けてきました。 ついに迎えた最終回では groongaの今と未来と題して最新情報をお届けしています。 まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいとい うのが動機で始めましたが、この半年間でgroonga-devへの新規投稿が活発化する など、一定の成果をあげることができたのではないかと思います。 ユーザーのみなさんの事例紹介の記事がなければ、この企画を続けることは できませんでした、ありがとうございました! * 最終回 groongaの今と未来 http://gihyo.jp/dev/clip/01/groonga/0011 過去の記事(第1回から第10回)については隔週連載groongaのページを参照してください。 http://gihyo.jp/dev/clip/01/groonga 似たような動機で、毎週木曜にQiitaでのgroonga関連の情報提供も続けています。 こちらも参考にどうぞ。 http://qiita.com/groonga 二つ目は、全文検索エンジンgroongaを囲む夕べ 4開催のお知らせです。 今年もいい肉の日(11/29)に全文検索エンジンgroongaの勉強会を開催するこ とになりました!なんと今回は4時間スペシャル!昨年は2時間だったので どどーんと2倍です。そのぶん開始時間がちょっと早くなっています。 時間枠を拡大したぶん、groonga開発チームからの紹介だけでなく ユーザーのみなさんの事例紹介も扱います。 * 全文検索エンジンgroongaを囲む夕べ 4 http://atnd.org/events/33070 まだ定員には余裕がありますが、参加申し込みはお早めに! 発表者の募集もしています。groongaに関連していればOKです。 こんなふうに使ってますというのがあれば、ぜひ応募してみてください。 GitHubのpull requestやメール、twitterで受け付けています。 応募の詳細についてはこちらを参照してください。 * http://atnd.org/events/43461#application ありがたいことに、前回に引き続き @suzuki さんが Ustreamでの配信をお手伝いしてくれることになりました。 17:00開始では残念だけど都合がつかないという人はUstreamで参加してみてください。 イベントそのものをちょっとだけ手伝ってもいいよーという場合には 受付のお手伝いやgihyo.jpへのイベントレポートを執筆するという関わりかたもできます。 やってみようかなぁというひとは協力者募集を参照してください。 懇親会への無料招待がついています。 * 協力者募集 http://atnd.org/events/43461#application groonga 3.0.8をリリースしました! http://groonga.org/ja/docs/news.html#release-3-0-8 それぞれの環境毎のインストール方法はこちらを見てください。 http://groonga.org/ja/docs/install.html 今回のリリースではデータベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 今回のリリースの主なトピックは次の通りです。 * 管理画面のユーザビリティを改善しました * groonga-httpdでクエリログのカスタマイズをサポート * deleteコマンドでカスケードをサポート * [募集] コマンドリファレンスをいっしょに良いものにしませんか * [募集] 週刊groongaの情報を海外向けに発信してみませんか ○ 管理画面のユーザビリティを改善しました groongaに付属している管理画面はとてもシンプルなものなのですが、 今回 @orangainさんがいくつか使い勝手を改善するためのパッチを提供してく れました。ありがとうございます。 * エラー時読込中ダイアログが表示されたままにならないようにする * 検索フォームにプレースホルダを表示する * Enterキーで検索フォームを送信する ○ groonga-httpdでクエリログのカスタマイズをサポート groonga-httpdでもクエリログをカスタマイズできるようになりました。 これまでは、クエリについてはaccess.logであったり、error.logなどを参考 にするしかありませんでした。 リクエストをGETですべて処理しているのであれば、それでも良いのですが、 POSTで処理している場合、エラーが発生したときのクエリを特定するのが 難しいという問題がありました。 今回groonga-httpdでクエリログをカスタマイズできるようになったことで 問題となるクエリを特定しやすくなりました。 カスタマイズするには、groonga-httpd.confにgroonga_query_log_path ディレクティブを指定します。 このディレクティブを指定しなかった場合には標準で次の場所にログが保存さ れていました。今回のリリースではデフォルトのログのパスもちょっと変わり ます。 変更前 /var/log/groonga/httpd/groonga.log 変更後 /var/log/groonga/httpd/groonga-query.log groonga_query_log_pathディレクティブはhttp,server,locationブロック いずれかに指定します。 locationブロックごとに指定できるようになったことで、ベータベースごとに クエリログを保存することができるようにもなりました。 location /d/ { groonga on; # You can disable query log for groonga. groonga_query_log_path /var/log/groonga/httpd/groonga-location-d.log; } location /d2/ { groonga on; # You can disable query log for groonga. groonga_query_log_path /var/log/groonga/httpd/groonga-location-d2.log; } ディレクティブの詳細については、次のドキュメントを参照してください。 http://groonga.org/ja/docs/reference/executables/groonga-httpd.html#groonga-query-log-path ○ deleteコマンドで参照関係のあるレコード削除をサポート 今回のリリースでは、deleteコマンドで参照関係のあるレコードの削除をサポー トしました。 例えば、とあるユーザーに関連付けられたURLがいくつかあるとします。 ユーザー情報とURLのテーブルにそれぞれデータを格納して参照するようにす るとなると、次のようなスキーマとなるでしょう。 table_create Users TABLE_HASH_KEY ShortText table_create URLs TABLE_HASH_KEY ShortText column_create Users bookmarks COLUMN_VECTOR URLs column_create URLs author COLUMN_SCALAR Users column_create URLs bookmarks_index COLUMN_INDEX Users bookmarks これに、サンプルデータをロードします。 load --table Users [ {"_key": "mori", "bookmarks": ["http://mroonga.org/", "http://groonga.org/", "http://ranguba.org/"]} ] load --table URLs [ {"_key": "http://groonga.org/", "author": "mori"} {"_key": "http://mroonga.org/", "author": "hayashi"} ] このとき、UsersテーブルにURLsテーブルにあるキーを参照するデータが格納 されています。そのため、単純に次のようにしてURLsテーブルの"http://groonga.org"という キーのレコードを削除することはできませんでした。 delete URLs --key "http://groonga.org/" 実際に実行してみると次のようなエラーが発生していました。 [ [ -2,1380092940.21387, 0.000238895416259766, "undeletable record (URLs:2) has value (bookmarks_index:1)", [ ["is_deletable","db.c",1564] ] ], false ] そのため、delete URLs --key "http://groonga.org/"でレコードを削除する 前に、Usersで参照しているデータを削除してからURLsのレコードを削除する というステップを踏む必要がありました。 これが、今回の参照関係のあるレコードの削除のサポートで、 delete URLs --key "http://groonga.org/" を実行するとURLsの該当する レコードを削除できるようになりました。 これを実行しても、bookmarksカラムの関係ないデータは削除されません。 "http://mroonga.org/"と"http://ranguba.org/"はそのままです。 ○ [募集] コマンドリファレンスをいっしょに良いものにしませんか APIのドキュメント化作業が一段落したので、次のステップとして コマンドリファレンスの改善作業をはじめました。 コマンドリファレンスは新規コマンドが追加されたり、機能が追加されたり する度に加筆修正していっているので、今では古いスタイルと 新しいスタイルとが混在している状態になっています。 これを新しいスタイルに統一しようというのが、このコマンドリファレンスの 改善作業の内容です。 ただ現状リソースが足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 具体的な作業手順の詳細については以下を参照してください。 もし、できそうだな、とかちょっとやってみよう、と思われたらぜひ参加して くれると嬉しいです。 http://groonga.org/ja/blog/2013/08/12/reference-command-documentation.html ○ [募集] 週刊groongaの情報を海外向けに発信してみませんか 毎週木曜に Qiita http://qiita.com/ にてgroongaやmroonga,rroongaなどの トピックを一つ投稿するという取り組みを続けています。 それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信して いこうかと考えています。 ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも 翻訳作業を協力していただけたらいいなと思っています。 翻訳作業の詳細については以下を参照してください。 http://groonga.org/ja/blog/2013/07/22/qiita-translation.html ○ 変更点 さて、3.0.7からの変更点は以下の通りです。 http://groonga.org/ja/docs/news.html#release-3-0-8 3.0.8リリース - 2013/09/29 ------------------------- 改良 * [admin] 検索機能のエラー処理を改善しました。エラーメッセージを表示した後に、 読み込み中のダイアログを消去します。 [orangainさんがパッチ提供] * [admin] Enterキーで検索フォームを送信するようにしました。 [orangainさんがパッチ提供] * [admin] 検索フォームにプレースホルダを表示するようにしました。 この変更で使用例を表示するようになります。 [orangainさんがパッチ提供] * [httpd] groonga-query-log-path ディレクティブをサポートしました。 * [doc] select コマンドのレスポンスのヒット数に関するドキュメントを更新しました。 * 連続するスペースによって作られる空のトークンをトークナイザーでは無視するようにしました。 [groonga-dev,01729] [村上さんが報告] * [token delimit] 連続したスペースはスペース1つとして扱うことにしました。 トークナイザーは2以上のスペースを入力として受付ます。 * [doc] 各カラムごとのインデックスとマルチカラムインデックスについての備考を追加しました。 * [doc] ソースコードへのリンクのラベルに言語の注記を追加しました。[groonga-dev,01751] [磯部さんが提案] * 参照関係のあるレコードの削除をサポートしました。これまでは、この操作でエラーになっていました。 * [doc] READMEのドキュメントの参照先を更新しました。[groonga-dev,01800] [磯部さんが報告] * [実験的] ruby_eval コマンドを追加しました。 * [doc] GQTPとHTTPのサーバー利用に関して注記を追加しました。 修正 * [admin] COLUMN_VECTOR の値を追加するボタンが機能しない不具合を修正 しました。 感謝 * @orangainさん * 村上さん * 磯部和広さん -- HAYASHI Kentaro <hayas****@clear*****>