HAYASHI Kentaro
hayas****@clear*****
2013年 7月 29日 (月) 10:27:54 JST
林です。 今日は肉の日ですね。 まずはじめに、隔週連載groongaの紹介です。 これまでも、groonga.orgにて利用事例 http://groonga.org/ja/users/ を 紹介してきましたが、それとは別に、http://gihyo.jp/にてgroonga関連の記事の連載を 隔週連載groongaとして続けています。 まだgroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。 現在第7回まで公開しています。 * 第7回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(2) http://gihyo.jp/dev/clip/01/groonga/0007 過去の記事(第1回から第6回)については隔週連載groongaのページを参照してください。 http://gihyo.jp/dev/clip/01/groonga 似たような動機で、毎週木曜にQiitaでのgroonga関連の情報提供も続けています。 こちらも参考にどうぞ。 http://qiita.com/groonga groonga 3.0.6をリリースしました! http://groonga.org/ja/docs/news.html#release-3-0-6 それぞれの環境毎のインストール方法はこちらを見てください。 http://groonga.org/ja/docs/install.html 今回のリリースではデータベースのファイル形式は互換性があるのでデータベースを作りなおす必要はありません。 今回のリリースの主なトピックは4つあります。 * クエリ構文で特別な文字のエスケープのサポート * Fedora 19のサポート * APIドキュメント化ボランティア募集のお知らせ * 週刊groonga翻訳ボランティア募集のお知らせ ○ クエリ構文で特別な文字のエスケープのサポート 今回のリリースではクエリ構文で特別な文字のエスケープのサポートをしました。 クエリ構文における特別扱いされる文字の詳細については以下を参照してくだ さい。 http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape 例えば、特別な文字の一つである'('そのものを検索したいときには、 '\('をgroongaに渡してあげれば良いことになります。 ただし、実際にgroongaに渡すまでにはいくつか以下のような階層があるので 使い方には注意が必要です。(下になるにつれてより低レイヤ) * シェル(bashなど) * groongaのコマンラインインタフェース(groongaコマンドのプロンプト) * groongaのクエリパーサー ここでのエスケープとはgroongaのクエリパーサーに '\(' が渡されるようにしなければなりません。 そのため、'\'をその上位層で解釈してしまう場合にはそのことを踏まえて エスケープしないといけません。 この場合低レイヤから逆にたどって考えてみましょう。 * groongaのクエリパーサーは'\('が渡される必要がある * groongaのコマンラインインタフェースはエスケープを解釈するので '\\\('が必要。 * シェル(bashなど)もエスケープを解釈するので'\\\\\\('が必要。 最終的にシェルのコマンドプロンプトでクエリを実行する場合には'\\\\\\(' としなければなりません。 これを具体例で確認してみましょう。 サンプルデータとスキーマは以下とします。(escape.grn) table_create Memos TABLE_PAT_KEY ShortText table_create Contents TABLE_PAT_KEY ShortText \ --default_tokenizer TokenDelimit \ --normalizer NormalizerAuto column_create Contents entries_key_index COLUMN_INDEX Memos _key load --table Memos [ {"_key": "(仮)"} ] サンプルデータとスキーマのファイルescape.grnをシェルのコマンドプロンプトから投入します。 % groonga -n testdb/db < escape.grn この状態で'(仮'を検索するには以下のクエリを実行します。 % groonga testdb/db select Memos --match_columns _key --query "\\\\\\(仮" シングルクォートの場合には以下のクエリで検索できます。 % groonga testdb/db select Memos --match_columns _key --query '\\\(仮' では、groongaのコマンドラインインタフェースから検索する場合を確認して みます。groongaのコマンドラインインタフェースの場合にはシェルによるエ スケープの解釈がなくなるので、そのぶんのエスケープが不要です。 % groonga testdb/db > select Memos --match_columns _key --query "\\\(仮" シングルクォートの場合には以下のクエリで検索できます。 > select Memos --match_columns _key --query '\\(仮' ○ Fedora 19のサポート 今回のリリースでは、7月2日にリリースされたFedora 19のサポートを開始しました。 そのかわり、Fedora 18のサポートは終了しています。 Fedoraプロジェクトにてパッケージのリリースをしていますが、 Fedoraの一般ユーザが利用するリポジトリに入るまでに2週間程度のタイムラグがあるので、 独自にリポジトリでもパッケージを提供しています。 パッケージの内容は同じなので、独自のリポジトリからyumでインストールするのと Fedoraプロジェクトからyumでインストールのに違いはありません。 ○ APIドキュメント化ボランティア募集のお知らせ 長い間懸案であった、groongaのAPIをドキュメント化する作業を始めました。 ただ現状リソースが足りていないので、ユーザのみなさんにも協力していただけたらいいなと思っています。 APIのドキュメント化が完了するとMariaDBへのバンドル作業が進むので、 MariaDBへのバンドルを応援したいという人はドキュメント化作業に参加してくれると嬉しいです。 具体的な作業手順の詳細については以下を参照してください。 ([groonga-dev,01551]でフィードバックがあったので後ほどよりわかりやすいように改訂します。) http://groonga.org/ja/blog/2013/07/22/api-documentation.html ○ 週刊groonga翻訳ボランティア募集のお知らせ 毎週木曜に Qiita http://qiita.com/ にてgroongaやmroonga,rroongaなどの トピックを一つ投稿するという取り組みを続けています。 それなりにトピックがたまってきたので、これを翻訳して英語圏にも情報を発信して いこうかと考えています。 ただ、現状リソースがあまり足りていないので、ユーザのみなさんにも 翻訳作業を協力していただけたらいいなと思っています。 翻訳作業の詳細については以下を参照してください。 http://groonga.org/ja/blog/2013/07/22/qiita-translation.html ○ 変更点 さて、3.0.5からの変更点は以下の通りです。 http://groonga.org/ja/docs/news.html#release-3-0-6 3.0.6リリース - 2013/07/29 ------------------------- 改良 * [doc] sub_filter の引数に関するドキュメントを追加しました。 * [suggest] 0MQ 3.xをサポートしました。[GitHub#63] [稲田さんが報告] * NetBSD向けに pthread_{mutex,cond}attr_setpshared() が使えるか チェックを追加しました。[おばたさんが報告] * クエリ構文でバックスラッシュでのエスケープをサポートしました。 [groonga-dev,01520] [田辺さんが報告] 修正 * 特定の関数(grn_obj_path()) が select のようなビルトイン関数で呼ばれた ときにクラッシュする不具合を修正しました。[瀧内さんが報告] 感謝 * 稲田尚也さん * おばたさん * 田辺公平さん * 瀧内元気さん -- HAYASHI Kentaro <hayas****@clear*****>