# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English

# 2.1.2リリース - 2013-01-29

## 改良

- 複数の `query()` を `select` コマンドでサポートしました。例えば、キーワードごとに異なる重みづけを指定して検索するのに'query("column * weight1", keyword1) || query("column * weight2", keyword2) || ...'などと `--filter` に指定することができます。

- 実験的機能であったビューを削除しました。

- `grn_logger_reopen` APIを追加しました。 `grn_logger_info` APIは非推奨となりました。 `grn_logger` APIを代りに使ってください。

- `grn_default_logger_set_path()` と `grn_default_logger_get_path()` APIを追加しました。グローバル変数としての `grn_log_path` は削除しました。上記変数を使うにはAPIを使用してください。

- `grn_default_query_logger_set_path()` と `grn_default_query_logger_get_path()` APIを追加しました。グローバル変数としての `grn_qlog_path` は削除しました。上記変数を使うにはAPIを使用してください。

- テーブル と ノーマライザー に関するドキュメントを追加。

- [deb][rpm] `groonga-tokenizer-mecab` パッケージのインストール時に必要な辞書をインストールするように改善した。

- 範囲検索を カラムインデックスによる関連テーブルをまたぐ検索 でもサポートした。例えば、 'column1.column2...columnN <= "1988-01-04 00:00:00"' というように `--filter` に範囲を指定することができるようになります。

- [rpm][fedora] Fedora 18をサポート。

- [rpm][fedora] Fedora 17サポートを削除。

- [doc] サーバーパッケージ のドキュメントを追加。

- [doc] query のドキュメントを追加。

## 修正

- MeCabトークナイザーの共有オブジェクトが見つからなくてもエラーをログに記録しないようにした。 [groonga-dev,01174] [wingさんが報告]

- [httpd] CentOS 5.4で `SED` 変数を明示的に設定することで、configureスクリプト実行が失敗しないようにした。

- 値を設定していない未初期化のベクタカラムの値を `select` コマンドで参照したときにクラッシュする不具合を修正した。

## 感謝

- wingさん

# 2.1.1リリース - 2012-12-29

2.1.0のバグフィックスリリースです。2.1.0を使っている人は2.1.0ではなく2.1.1を使ってください。

## 修正

- groonga 2.0.8以前で作成したデータベース中の `KEY_NORMALIZE` 関連の情報が失われる問題を修正。

# 2.1.0リリース - 2012-12-29

ご用心

2.1.0ではなく2.1.1を使ってください。2.1.0は `KEY_NORMALIZE` 関連の深刻な問題があります。

ご用心

このリリースでは `table_list` や `column_list` コマンドに関する非互換な変更があります。もしご自身で作成したプログラム等でこれらコマンドの出力結果に依存しているものがあるなら、"null"文字列ではなくnullをサポートする必要があります。

このリリースでは `--normalizer` オプションをサポートしましたが、副作用があり、一度でも古いバージョンのデータベースを新しいバージョンのgroongaで開くと、古いバージョンのgroongaではデータベースを開けなくなります。

もうひとつトークナイザプラグインAPIに関する非互換な変更があります。 `grn_tokenizer_query_open` APIの引数が変更されました。このAPIの変更はトークナイザプラグインの開発者に影響があります。

## 改良

- [doc] カラムインデックスによる関連テーブルをまたぐ検索 に関するドキュメントを追加。

- snippet_html の引数として式を指定できるようにした。この変更で、 `snippet_html("STRING" + "STRING")` と書けるようになります。 "STRING"にはカラム名や文字列を指定できます。 [嶋田 大貴さんが報告]

- 正規化を行うプラグインを作成できるようにした。

- `groonga-query-log-analyzer` を groonga-query-log というRubyGemsにして移動しました。これによりgroongaのパッケージをインストールせずにクエリログの解析を行えるようになります。

- table_create コマンドにて `--normalizer` オプションの指定をサポートしました。正規化のためのプラグインを指定できるようになります。

- "No Object"を表現するのに"null"文字列ではなくnull値を使うように変更しました。これは非互換な変更で `table_list` や `column_list` といったコマンドの出力結果に影響します。

- 正規化の振舞いを制御するためのフラグを `grn_tokenizer_query_open` APIの最後の引数として追加した。

- コマンド リストに書かれた継続行のサポート。

- カラムインデックスによる関連テーブルをまたぐ検索 をキーのないテーブルだけでなく、ハッシュやパトリシア木、ダブル配列を指定したテーブルでも使えるように改善した。

## 修正

- [windows] `O_BINARY` フラグをファイルを開くときに指定するようにした。groonga HTTPサーバが無限ループに陥っていた問題が解決します。 [GitHub#47] [Shimomura Tatsuyaさんがパッチ提供]

- `--default-match-escalation-threshold` が負数を受け付けないため、 検索 時に行なわれる挙動の変更を無効化できない問題を修正しました。オプションの詳細は `--default-match-escalation-threshold` を参照してください。

- `--output_columns` で"*"のあとに `_score` を指定しても無視される不具合を修正した。

## 感謝

- 嶋田 大貴さん

- Shimomura Tatsuyaさん

# 2.0.9リリース - 2012-11-29

## 改良

- `geo_distance` 関数の近似方法として `rectangle` を指定したときに境界をまたいでも距離の算出できるようにした。 [#1534]

- [doc] GQTP の仕様についてのドキュメントを追加した。

- groongaコマンドの起動時に致命的でない `getaddrinfo()` 関数のエラーは無視するようにした。この変更はgroongaを通常使用する場合には影響しません。その理由はデフォルトのホスト名が解決できるかチェックするのに使っていただけだからです。

- [実験的] キーワードとその周辺のテキストを抽出するための `snippet_html()` 関数を追加した。詳細については snippet_html を参照してください。

- テーブルのレコードを出力している際に発生したエラーを表示するようにした。

- 複数のテーブルで関連したインデックスが設定されていれば、ネストしたインデックス (複数のカラムインデックス名を `.` で連結して指定)に対してキーワードで検索できるようにした。

- `TokenMecab` トークナイザを使ったときにログに"[tokenizer][mecab]"タグを出力するようにした。

- `TokenKyTea` トークナイザを使ったときにログに"[tokenizer][kytea]"タグを出力するようにした。

- 検索結果の内容のうち、コマンドのエラー表示は別の配列として表示するようにしました。この変更は非互換な変更ですが、既存のプログラムには影響しません。

- 出力形式 に関するドキュメントを追加。

- リターンコード に関するドキュメントを追加。

- インデックスを使った指定範囲の検索をサポート。

## 修正

- GQTPヘッダー にてステータスコードにネットワークバイトオーダーを使用するように修正した。ネットワークプロトコルの慣習に合わせたものですが、これによりgroongaバージョン2.0.8以下のクライアントからgroongaバージョン2.0.9以上のサーバに接続してコマンドの実行に失敗したときにバイトオーダーが異なるため、ステータスコードを正しく表示できなくなります。

- UTF-8の正規化でオフセット計算の誤りを修正した。この変更は `snippet_html()` 関数の返す結果に影響し、キーワードとタグ周辺のテキストが誤った位置に挿入されないようにする。 [#1531] [嶋田大貴さんが報告]

- [windows] groongaコマンドの起動時にバッファの範囲外アクセスによるセグメンテーションフォルトが発生しないように修正した。 [#1532] [Akio Tajimaさんがパッチ提供]

- [windows] カラムに保存しているデータのサイズが128MBを超える場合に、そのデータを参照できない不具合を修正した。 [groonga-dev,01088] [ongaeshiさんが報告]

- `Int*` や `UInt*` ( `Int32/Uint32` は除く) に対してカラムインデックスによる検索結果が正しくない不具合を修正した。

- 削除したはずのレコードが検索結果で見つかる問題を修正した。

- latin1やkoi8rの正規化で、与えた文字列データにNULL終端が途中に含まれているとすべての文字列データを正規化できない不具合を修正した。

- `select` コマンドでデータが保存されていないカラムを参照したときに、型にあったデフォルト値を返さない不具合を修正した。

- Fixed to exclude the value of vector column metadata in 静的なインデックス構築方法. This change not to contain such a metadata as search results.

## 感謝

- 嶋田 大貴さん

- Akio Tajimaさん

- ongaeshiさん

# 2.0.8リリース - 2012-10-29

## 改良

- [rpm] server-httpとhttpdパッケージの説明を改善した。 [Daiki Uenoさんが提案]

- プラグインによるクエリ展開のカスタマイズをサポート。

- [実験的] クエリ展開を行う `QueryExpanderTSV` プラグインを追加。

- Ubuntu 12.10 Quantal Quetzalをサポート。

- [実験的] クエリの `output_columns` で関数呼び出しをサポート。

- [doc][rpm] MeCab辞書のインストールについて説明を追加。 [serihiroさんが報告]

## 修正

- [rpm] 不要な"Requires"をspecファイルから削除するようにした。[Daiki Uenoさんが報告]

- groonga-server-gqtpパッケージのライセンス表記が不正確なのを修正した。

- [admin] レコードの編集ボタンで誤ったレコードが表示されるのを修正した。 [GitHub#34] [firewoodさんが報告]

- [deb] 不要なpcreパッケージへの依存を削除した。

- [deb] パッケージに入っていなかったテーブルプラグインを添付するようにした。

## 感謝

- うえのさん

- firewoodさん

- serihiroさん

# 2.0.7リリース - 2012-09-29

## 改良

- [doc] `--query_flags` の説明を追加。

- [doc][httpd] gzip圧縮についての設定サンプルを追加。

- [httpd][rpm][centos] groonga-httpd initスクリプトを追加。

- [rpm] logrotateの設定ファイルを追加。

- インストール中のデータベース作成をサポート。

- [httpd] `groonga_database_auto_create` ディレクティブをサポート。

- 集合演算でのスコアのマージをサポート。 [GitHub#31]

- [httpd] POSTによる `load` コマンドをサポート。

- 一時結果テーブルを作成する際のエラーチェックを追加。 [GitHub#33]

- GQTP サーバーパッケージを追加。

- `max()` 関数を追加。

- `min()` 関数を追加。

## 修正

- `load` コマンド実行時にベクタ要素へ主キー値の属する型情報を設定するように修正した。 [GitHub#30]

- [httpd] NULLでの初期化漏れを修正した。 [@Kiskeさんが報告]

- [httpd] `content_type_len` のサイズ設定漏れを修正した。

- [rpm][fedora] `groonga.service` で `--bind-address` を使うように修正した。

- 不適切なフィルタの引数によリクラッシュする問題を修正した。 [GitHub#32]

- Time型からTime型へのキャストで値が壊れる不具合を修正。

- Time型からFloat型へのキャストで値が壊れる不具合を修正。

## 感謝

- @Kiskeさん

# 2.0.6リリース - 2012-08-29

## 改良

- [deb][rpm] `groonga-server-common` メタパッケージを追加。 [#1451]

- `--query_flags` オプションを `select` コマンドでサポート。

- groonga-httpdでPCREの自動検出をサポート。

- [doc] TwiterとFacebookの情報を追加。

- MeCabで `mecab_new2()` 関数失敗時のエラーメッセージも表示するように改善した。

- [doc] groonga をサーバーとして利用するときの詳細ドキュメントを追加。

- `vm.overcommit_memory` の詳細を記録するように改善した。

- カスタムセレクタの定義をサポート。

- groongaで `--working-directory` オプションをサポートした。

- groonga-httpdで `dump` コマンドをサポートした。

- `clearlock` コマンドで見つからないターゲット名を表示するように改善した。

- テーブルプラグインで実装されている `get` コマンドについてのエラーメッセージを改善した。

- [rpm][centos] MeCab 0.994をサポートした。 [#1455] [岩井さんが提案]

- ログ記録レベルの既定の最大値を `grn_init()` を呼ぶ前に変更可能にした。

- すべてのレコードIDを結果テーブルへとコピーするための関数 `all_records()` を追加した。

- `select` コマンドの `--query` で '-WORD' 構文をサポート。

## 修正

- [doc] チュートリアルの実行例を修正した。 [#1428] [岩井さんが報告]

- groonga-httpdの初期化スクリプトでユーザ/グループとしてgroongaを強制的に指定しないように修正した。

- [rpm][fedora] groonga-httpdサービスでstopパラメータの指定漏れを修正した。

- Fixed a bug that the last 1 byte for cache key is ignored by `select` command.

- 複雑な関数呼び出しで引数の個数の検出処理を修正した。

- Clangによる警告を抑制するように修正した。

- `clearlock` コマンドを実行する際に `add` コマンドが存在しないことによる前方非互換なエラーを修正した。

- [windows] バイナリデータを含むデータベースを開く際のエラーを修正した。 [@yitoさんが報告]

## 感謝

- 岩井さん

- @yitoさん

# 2.0.5リリース - 2012-07-29

## 改良

- `"rect"` もしくは `"rectangle"` 引数を指定した南半球における距離の計算をサポート。 [#1418] [#1419] [#1420] [#1421]

- [doc] スクリプト構文にてリテラルの説明を追加。

- groonga-suggestとgroonga-httpdのソース外ビルドに対応。

- クエリパラメータの区切り文字として ";"をサポート。 [#1406] [岩井さんが提案]

- [doc] スクリプト構文の説明を追加。

- スクリプト構文で近傍検索を行う `'column *N "word1 word2 ..."'` 構文をサポート。 [#1423]

- [doc] 後方一致検索の制限を追記。

- 近傍検索で `_key` 疑似カラムをサポート。 [GitHub#19]

- [doc] 基本的なECMAScript関連の構文を追加。

- [doc] geo_distance の説明を更新。

- [rpm][fedora] Fedora 17をサポート。

- [rpm][fedora] Fedora 16サポートを削除。

- 論理演算子 `"!"` をサポート。 [GitHub#22]

- [httpd] groongaデータベースごとのロケーション指定をサポート。

- loadコマンドを処理中にはエラーメッセージを返すように改善。

- 継続困難なエラーが発生した場合にloadコマンドを中断するように改善。

- 正しくない--columnsの値が渡されたときloadコマンドを中断するように改善。

- ロックされたデータベースのオープンをサポート。 [GitHub#21]

## 修正

- groonga-httpdが Mac OS Xでビルドできない問題を修正。[島田 浩二さんが報告]

- groonga-httpdがインストール済みのヘッダファイルを使用しないように修正。

- Mac OS X Lionでgroongaがビルドできない問題を修正。

- [doc] table_remove コマンドの説明を修正。

- インデックスが張られていないと未対応のオぺレータで無限ループする問題を修正。 [GitHub#20]

- メモリリークを引き起すエラーコードの誤りを修正。

- カラムの値を壊すことにつながるエラーコードの誤りを修正。

- [admin] エラーメッセージをエスケープするように修正。

- データベースの非互換を引き起こす読めないオブジェクトを無視するように修正。 [#1429] [岩井さんが報告]

## 感謝

- 島田 浩二さん

- 岩井さん

# 2.0.4リリース - 2012-06-29

## 改良

- KyTea 0.4.2のみをサポート。

- KyTea 0.4.1以前のサポートを削除。

- [実験的] nginxベースのHTTPインタフェースをサポート。

- `"rect"` もしくは `"rectangle"` 引数を指定した北半球における距離の計算をサポート。

- [doc] Travis CI の統合に関するドキュメントを追加。

- [doc] 全文検索とフレーズ検索についての説明を追加。詳細については 全文検索条件 および フレーズ検索条件 を参照してください。

- [doc] 比較条件についての説明を追加。詳細は 条件式 を参照してください。

- [doc] クエリー構文 のサンプルを追加。

- [doc] 結合式 の説明を追加。

- [doc] 前方一致検索条件 と 後方一致検索条件 の説明を追加。

- インデックスを使った後方一致検索をサポート。

- [doc] grn_expr に関するドキュメントを追加。

- [munin] RubyGemsでインストールしたJSONライブラリをサポート。 [GitHub#17] [岩井さんがパッチ提供]

- [doc] チュートリアル記載のTime型指定値についての説明を更新。 [#1405] [岩井さんが報告]

- [rpm] groongaパッケージから必要のないgroonga-tokenizer-mecabパッケージへの依存関係を削除。 [GitHub#18] [岩井さんがパッチ提供]

## 修正

- Mac OS Xでバッチモードを使用した際にコマンドプロンプトの表示が意図しない状態になる問題を修正。 [@soundkitchenさんが報告]

- 誤ったコマンドをクライアントモードで実行しても終了しないように修正。 [#1305]

- `--query` 構文で `'=R'` が `'OR'` として扱われてしまう問題を修正。 [#1393]

## 感謝

- @soundkitchenさん

- 岩井さん

# 2.0.3リリース - 2012-05-29

## 改良

- [doc] リリース手順を追加。

- 1プロセスで開けるファイルディスクリプターの最大数が4096という制限を削除。

- [実験的] tableプラグインを追加。

- [doc] select コマンドの説明を追加。

- [doc] 実行例をコピー&ペーストしやすくした。

- [windows] Visual Studio 2010 ExpressとCMakeを使ったビルドをサポート。詳細は Windows を参照してください。

- [doc][solaris] Solarisでビルドするためのドキュメントを追加。詳細は Oracle Solaris を参照してください。

- [doc][yum] epel-releaseパッケージのバージョンを更新。[岩井さんが報告]

- [doc][centos6] RepoforgeにあるCentOS 6用のMuninを使うという設定を削除。[岩井さんが報告]

- ソースをzip形式でも配布するようにした。

- [munin] groonga_dist Muninプラグインが複数のファイルを使っているオブジェクトをサポート。

- Travis CIを使うようにした。

- [yum] groongaのyumリポジトリを提供するRPMパッケージ名をgroonga-repositoryからgroonga-releaseへと変更。これは、centos-releaseやfedora-releaseといったRPMパッケージの命名規則とあわせるためである。

## 修正

- [doc] yumリポジトリを更新するためのコマンドを修正。 [岩井さんが提案]

- [deb] logrotateでlog_reopenコマンドが誤ったプロトコルを使用する不具合を修正。

- XMLレスポンスのERRORタグが壊れている問題を修正。[#1363] [GitHub#13] [岩井さんがパッチ提供]

- grn_ctx_fin()がgrn_ctxの一部をクリアしきれていない問題を修正。

- `&!` 演算子をグループ化した式と一緒に使うと間違った結果を返す不具合を修正。[#1372]

- インデックスのソースに指定したカラム経由でレコードのキーを登録するとキーが正規化されない問題を修正。

## 感謝

- 岩井さん

# 2.0.2リリース - 2012-04-29

ご用心

今回のリリースよりパッケージへ署名する鍵を変更しました。groongaパッケージを更新する前にパッケージ署名用の新しい鍵をインポートして下さい。

Debian/Ubuntu:

    % sudo apt-get update
    % sudo apt-get -y --allow-unauthenticated install groonga-keyring

CentOS/Fedora:

    % sudo yum makecache
    % sudo yum install --nogpgcheck -y groonga-repository

## 改良

- [pkg-config] 必要のないMessagePackへの依存関係を削除。

- [rpm][fedora] libeditをサポート。[#1325] [IWAI, Masaharuさんが提案]

- [rpm] zlibおよびLZOをサポート。[#1324] [IWAI, Masaharuさんがパッチ提供]

- [groonga] デーモン化のタイミングを改善。groongaサーバーはソケットがlisten状態になった後にデーモン化するようになった。これによりgroongaサーバーがデーモン化した時点で接続を受け付けられる状態になっている。 [#1326]

- [admin] groongaの管理ページでサジェスト機能をサポート。

- [dump] Mecabのトークナイザのロードエラーを無視するようにした。

- CMakeをサポート。

- [load] カラムの値が設定できなかった時のエラーレポートをサポート。

- 類似検索をサポート。類似検索の構文は `select --filter "column *S 'TEXT'"` 。 [#1342]

- [apt][yum] パッケージ署名用の鍵を変更。

- Ubuntu Precise Pangolinをサポート。

- [apt] groongaのパッケージ署名用の鍵を提供するgroonga-keyring debパッケージを追加。

## 修正

- [deb][rpm] 非推奨の `--address` オプションではなく `--bind--address` オプションを使用するようにした。[#1320] [IWAI, Masaharuさんがパッチ提供]

- [deb] groonga-serverパッケージの設定ファイルを `/etc/default/groonga` から `/etc/default/groonga-server` へ改名。

- [rpm][fedora] groonga-serverの%postで更新処理を行うかどうかの条件を修正。 [GitHub#11] [Daiki Uenoさんがパッチ提供]

- [rpm] 必要のないログを削除。 [#1328] [IWAI, Masaharuさんがパッチ提供]

- [deb][rpm] curlへの依存関係を追加。 [GitHub#12] [IWAI, Masaharuさんがパッチ提供]

- [rpm] groongaパッケージから必要のないrubyパッケージへの依存関係を削除。 [#1330] [IWAI, Masaharuさんが提案]

- [deb] groonga-serverの設定ファイルに未設定だったデフォルト値を追加。

- 非常に大きな転置インデックスを更新しながら検索するとクラッシュする不具合を修正。 [#1329]

- 文字列をバイト文字列でなく文字として比較している不具合を修正。 [#1340] [Kawaji Shinyaさんが報告]

## 感謝

- 岩井さん

- うえのさん

- Shinya Kawajiさん

# 2.0.1リリース - 2012-03-29

## 改良

- 別ディレクトリでのビルドをサポートした。 [#1298] [かずひこさんが報告]

- [solaris] Solaris 11上でのビルドできるようにした。 [かずひこさんが報告]

- [test] 機能テストを追加した。

- [test] Rubyでテストを実行するためにはconfigureに `--with-ruby19` オプションを指定しなければいけないようにした。

- [dump] デフォルトトークナイザーを持っているテーブルのレコードもダンプするようにした。

- [suggest] `similar_search` オプションを追加。

- [groonga] 非推奨の `-a` と `--address` と `--admin-html-path` オプションを削除した。

- 戻り値チェックを追加した。 [GitHub#9] [Markus Elfringさんが報告]

- [dat] 単語抽出処理をサポートした。

- ロゴ を追加した。

- HTMLのデザインを更新した。

- `grntest` を `groonga-benchmark` に改名した。

- CentOS 5上で `autogen.sh` が動くようにした。

- [linux] `vm.overcommit_memory` カーネルパラメーターの値をチェックするようにした。 [#1289]

- `grn_snip` が `grn_obj` の仕組みを使うようにした。 [#1054]

## 修正

- インストールしたRubyスクリプトをuninstallでアンインストールできない問題を修正した。 [#1299] [かずひこさんが報告]

- Gemfileを追加した。 [#1302] [かずひこさんが報告]

- インデックスに登録されているレコードが見つからないことがある問題を修正した。この機能を使っているのはmroongaだけである。 [#1303]

- [groonga] `--server-id` オプションの名前の最後に `-id` がついていなかったので追加した。

- latin1を正規化するときに意図しないメモリ領域にアクセスしてしまう問題を修正した。

## 感謝

- かずひこさん

- Markus Elfringさん

# 2.0.0リリース - 2012-02-29

## 改良

- [dat] 長さが0かどうかキーをチェックするようにした。

- [windows] GCC関連のDLLを同梱するようにした。 [groonga-dev,00686] [鈴木さんが報告]

- [php] PHP 5.4に対応した。 [Daiki Uenoさんがパッチ提供]

- FSFの住所を更新した。 [Daiki Uenoさんが提案]

- [fedora] systemdに対応した。 [Daiki Uenoさんがパッチ提供]

- [rpm][debian] デフォルトのプロトコルをgqtpからHTTPに変更した。

- [rpm][centos] statusコマンドに対応した。

- ログメッセージから必要のない `:` を削除した。

- 非推奨となっていたgrn_queryを削除した。 [#1247]

- テーブル作成時にgrn_ctx_at()の呼び出し回数を減らした。

- [pat] キャッシュに対応した。

- [tokenizer] トークナイザーAPIを整理した。

- 名前に `@` も使えるようにした。

- [tokenizer] KyTea を使ったトークナイザーを追加した。

- 静的なインデックス構築方法 をサポートした。

- [tokenizer] MeCab 0.993に対応した。 [groonga-dev,00703] [Masaharu YOSHIOKAさんが報告]

- [windows] MessagePackに対応した。

## 修正

- [pat] 最後のノードを見つけられない問題を修正した。 [#1258]

- [doc] 日本語ページ内のリンクを修正した。 [@naoinaさんが報告]

- [doc] 間違ったデフォルト値を修正した。 [@naoinaさんが報告]

- 誤字を修正した。[かずひこさんが報告]

- [http] `load` コマンドのエラーがクリアされない不具合を修正した。 [@wareohjiさんが報告]

## 感謝

- 鈴木さん

- うえのさん

- @naoinaさん

- かずひこさん

- Masaharu YOSHIOKAさん

- @wareohjiさん