BloGroonga

2012-07-29

groonga 2.0.5リリース

今日は肉の日ですね。

groonga 2.0.5 がリリースされました!

それぞれの環境毎のインストール方法: インストール

今回のリリースの主なトピックは4つあります。

  • 近傍検索を行う 'column *N "word1 word2 ..."' 構文をサポート
  • groongaドキュメントの更新
  • groonga-httpdの機能強化
  • 位置情報から距離を計算する組み込み関数の改善

近傍検索を行う 'column *N "word1 word2 ..."' 構文をサポート

groongaでは近傍検索を行うための構文が用意されていましたが、実際には近傍検索を行うことができませんでした。

近傍検索とはすべての単語が含まれていてかつそれぞれの単語が文章内で近くにあるレコードを検索することです。

近くにあるかどうかは単語の距離が10以内にあるかどうかです。今のところ、この値は固定となっていて変更できません。 距離の単位は距離の単位はN-gram系のトークナイザーでは文字数で、形態素解析系のトークナイザーでは単語数となっています。

近傍検索を行うには 'column *N "word1 word2 ..."' 構文を使います。実際の使用例については 近傍検索 を参照してください。

groongaドキュメントの更新

今回のリリースではドキュメントの更新を行いました。

groongaには スクリプト構文 と呼んでいるECMAScriptに類似した構文で条件式などを表現するための構文があります。

ECMAScriptにあるような基本的な演算子やリテラルの説明や、groonga独自に追加した検索用の演算子の説明を追加しました。

スキーマ定義とサンプルデータによる実行例も併記してありますので、すぐに機能を確認することができます。

groonga-httpd の機能強化

groonga-httpdの機能強化のポイントは2つあります。

  • groonga-httpdのベースパスのカスタマイズをサポート
  • locationディレクティブによる複数データベースのサポート

まず最初に紹介する機能強化ポイントはベースパスのカスタマイズについてです。

これまで groonga-httpd ではgroongaのHTTPサーバー機能と同様に /d/command?parameter1=value&... というリクエスト形式しかサポートしていませんでした。

今回のリリースではURIのベースパスをカスタマイズするための groonga_base_path ディレクティブを追加しました。

これにより/d/以外のプレフィクスのリクエストも受け付けることができるようになります。

groonga_base_path を活用することで、特定のコマンドを実行する際に認証をかける設定を行うことができるようになります。

具体例として shutdownコマンドに認証をかける設定方法 を紹介しています。

もう一つの機能強化ポイントは複数データベースのサポートです。

従来提供していたgroongaのHTTPサーバー機能ではプロセスが扱えるデータベースが1つに限定されていました。

今回のリリースではlocationディレクティブごとに対応するデータベースを groonga_database ディレクティブによって指定することができるようになりました。

前述のベースパスのカスタマイズと組み合わせることで、 groonga-httpd では複数のデータベースをあたかも1つのデータソースであるかのようにまとめて扱うことができるようになります。

ディレクティブについては 設定ディレクティブ を参照してください。

位置情報から距離を計算する組み込み関数の改善

groongaでは位置情報から距離を計算する組み込み関数として geo_distance を提供しています。

geo_distance には子午線や日付変更線、赤道などのいわゆる境界をまたいだ距離の計算が正しく行えない制限があります。

geo_distance では距離を計算する際に地形をどのように近似して計算するかを方形近似、球面近似、 楕円近似の3つのうちから選択できます。

今回のリリースでは方形近似を選択した場合について、部分的にこの問題を改善しています。

具体的には二点が南半球の範囲にある場合において東経/西経をまたいでも正しく距離を計算できるようになりました。

geo_distance もこれに合わせて更新しています。

さいごに

2.0.4からの詳細な変更点は 2.0.5リリース 2012/07/29 を確認してください。

それでは、groongaでガンガン検索してください!