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

- English

# 3.1.2リリース - 2014-01-29

## 改良

- [doc] "Groonga" 表記に更新しました。[cosmo0920さんがパッチ提供] [GitHub#136, #137, #138, #139, #140, #141, #142, #143, #144, #145, #146, #147, #148, #149, #150, #151]

- ロックタイムアウトの値をカスタマイズできるようにしました。 詳細は 全体設定 を参照してください。 [groonga-dev,02017] [yokuさんが提案]

- [doc] ロックタイムアウトについての説明を追加しました。

- `GRN_JA_SKIP_SAME_VALUE_PUT` をデフォルトで有効にしました。以前のバージョンまでは、この設定は 'no' となっていました。この変更により、Groongaのデータベースのサイズの増加を抑制できます。

- ネストしたインデックスと複数のキーワードを含むクエリに対するインデックスを使えるようにしました。この変更で複数のキーワードで絞り込んだときに検索結果が欠落していた問題が改善します。

- スニペット向けにノーマライザーをカスタマイズするためのAPIを追加しました。

## 修正

- 空のクエリに対してインデックスを使わないようにしました。この変更で、空のクエリでも検索できるようになりました。ただし空のレコードがたくさんあるとパフォーマンスの問題があることに注意してください。 [groonga-dev,02052] [村上さんが報告]

- "X || Y"と"X && Y"の返り値の振舞いをECMAScriptに準拠するようにしました。"X || Y"では、もしXかYが条件を満す場合にはXもしくはYそのものの値を返します。以前は1もしくは0を返していました。

- "X && Y"では、もしXとYが条件を満す場合には、1ではなく、Xの値を返します。もしXが条件を満さない場合には、0ではなくfalseを返します。

- スニペットが見付からない場合にはnullを返すようにしました。この変更により、 snippet_html のデフォルトの値を指定できるようになりました。この用途には "snippet_html(XXX) || 'デフォルトの値'"を使って下さい。

## 感謝

- cosmo0920さん

- yokuさん

- 村上さん

# 3.1.1リリース - 2013-12-29

## 改良

- [deb] Debianのパッケージングポリシーに準拠するようにしました。[groonga-dev,01930] [やまねさんが提案]

- [deb] Debian 6.0 (squeeze)のサポートをやめました。

- [deb] Ubuntu 10.04 (Lucid)のサポートをやめました。

- geo_in_rectangle が全世界をサポートしました。

- GeoPoint型の値のキャストに失敗したときにエラーを報告するようになりました。

- 疑似カラム名でアクセスするためにいくつかのマクロを公開するようにしました。[groonga-dev,01999] [whombxさんが提案]

- [doc] ドリルダウンのドキュメントを整理しました。[@Yappoさんが報告]

- 特定の範囲にあるカラムの値をフィルタリングするのに使う between 関数をサポートしました。

- [doc] Travis CIの環境情報を更新しました。[cosmo0920さんがパッチ提供]

- [rpm][fedora] Fedora 19のサポートをやめました。

- [rpm][fedora] Fedora 20をサポートしました。

- [doc] "Groonga" 表記に更新しました。[cosmo0920さんがパッチ提供] [GitHub#122, #123, #124, #125, #125, #126, #127, #128, #129, #130, #131, #131, #132, #133, #134]

## 修正

- [munin] GQTPのポート番号の誤りを修正しました。

- [geo_in_circle] "LONGITUDExLATITUDE" を geo_in_circle の3番目の引数に与えたときにGroongaがクラッシュする問題を修正しました。

## 感謝

- やまねひできさん

- whombxさん

- @Yappoさん

- cosmo0920さん

# 3.1.0リリース - 2013-11-29

## 改良

- [実験的] 同じ値なら更新をスキップするオプションをサポートしました。 GRN_JA_SKIP_SAME_VALUE_PUT=yesを環境変数に設定すると有効になります。

- 空のトークンを警告するときにトークナイザーと元のテキストを表示するよう にしました。これにより実際のトークンが表示されるので、トークンにまつわ る問題を調べるのに役立ちます。

- AIOサポートを打ち切りました。[#2054] [sho MINAGAWAさんが報告]

- [windows] Visual Studio Express 2008でのビルドをサポートしました。[#1964 21番目のコメント参照] 将来的にMariaDBへのバンドルを推進することを目的としています。

## 修正

- "_value"カラムの型がInt32として扱われる問題を修正しました。このバグ で"_value"カラムの値が意図せずキャストされてしまうことがありました。[瀧内さんが報告]

- ベンチマークプログラム向けにはGLib 2.14.0以降を要求するようにしました。 ベンチマークプログラムがGRegexを使うようになったためです。 Groongaを'--enable-benchmark'でビルドしようとしていた場合に問題となっ ていました。[groonga-dev,01890] [WINGさんが報告]

- 空のベクターカラムを更新しようとしたときにメモリリークする問題を修正し ました。

- ベクターカラムのインデックスを更新するときにメモリリークする問題を修正 しました。UTF-8として正しくないバイトシーケンスをカラムの値として保存 してある場合にこの影響を受けます。

- [プラグイン][windows] 'lib/groonga/plugins'を指定しないとregisterコマンドが 失敗する問題を修正しました。[@yitoさんが報告]

## 感謝

- sho MINAGAWAさん

- 瀧内元気さん

- WINGさん

- @yitoさん

# 3.0.9リリース - 2013-10-29

## 改良

- [doc][httpd] groonga_database_auto_create ディレクティブのドキュメントを追加しました。

- [httpd] groonga_cache_limit ディレクティブを追加しました。

- [doc] zlib/lzoによる圧縮がデフォルトで無効となっている理由を追加しました。 [groonga-dev,01845] [村上さんが提案]

- HTTPサーバーのRLIMIT_NOFILEに関連した制限を削除しました。HTTPサーバープロセスが4096以上のファイルを扱えるようにしています。

- [実験的] Groongaへmrubyを統合するためのAPIをいくつか追加しました。 [GitHub#109, #110, #111, #112, #113, #114, #115, #116, #117, #118] [wanabeさんがパッチ提供]

- [travis] Travis-CI上でCMakeによるビルドをサポートしました。

- [doc] チューニング のドキュメントを追加しました。

- [実験的] ruby_load コマンドを追加しました。

- [httpd] メッセージボディが複数バッファリングされているPOSTリクエストをサポートしました。そのような場合にこれまではタイムアウトしていました。 [GitHub#120] [鷲田さんがパッチを提供]

- [gqtp] エラーメッセージをサポートしました。メッセージボディとしてテキストを二重引用符で囲むことなく返します。これは非互換な変更です。

- [http] "400 Bad request" を引数のエラーとしてサポートしました。

- [doc] 補完 のサンプルを追加しました。

- Ubuntu 13.10 Saucy Salamanderをサポート。

## 修正

- オーバーフローによってSEGVを引き起こす不具合を修正しました。この問題はインデックスのサイズが仮想メモリのサイズを超過したような場合に発生します。 [groonga-dev,01661] [村上さんが報告]

- テーブルを作成するときの不要なロックをかけないようにしました。この変更はGroonga 3.0.5で入ったパフォーマンス低下を解消します。

- データベースに参照カラムがある場合に削除できない不具合を修正しました。インデックスカラムや参照カラムを先に削除することなく、インデックステーブルやカラムを削除しようとして失敗するというものです。[Eito Katagiriが報告] [GitHub Rroonga #13]

- DATキーを使っているデータベースの削除でごみが残ったままになる不具合を修正しました。

- [http] 同じワーカースレッドにおいてHTTPヘッダのバッファを共有していることによりメモリリークが発生していた問題を修正しました。

- [httpd] groonga_database_auto_create パラメータが継承されない不具合を修正しました。これらのパラメータはlocationブロック以外では無視されていました。

- statusコマンドが正しくないキャッシュヒット率を返すことがある問題を修正しました。

- Time型にキャストするときにオーバーフローする問題を修正しました。これはTime型に32bitの範囲を超えた値を設定する場合に影響します。

## 感謝

- 村上さん

- wanabeさん

- 鷲田基さん

- Eito Katagiriさん

# 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さん

- 村上さん

- 磯部和広さん

# 3.0.7リリース - 2013-08-29

## 改良

- APIドキュメントを追加しました。[groonga-dev,01593] [GitHub#79,#80,#81,#82,#83,#84,#85,#86,#87,#88,#89,#90,#91,#92,#93,#95,#96,#97,#98,#99,#100] [whombxさんがパッチを提供]

- [table_remove] 参照されているパトリシアトライもしくはハッシュテーブルが削除されないようにした。この変更は参照されているテーブルがうっかり削除されないようにします。

- 長すぎるトークン (4096バイトを超過) を単に無視するようにしました。この変更はトークンの登録時に影響します。以前は、警告ではなくエラーとして扱っていました。[groonga-dev,01571] [村上さんが提案]

- ログメッセージで無視された実際の語句を表示するようにしました。[groonga-dev,01621] [村上さんが報告]

- [httpd] POSTメソッドでデータをロードできるようにしました。 [GitHub#101] [鷲田さんがパッチを提供]

- [httpd] `groonga_log_path` ディレクティブをサポートしました。

- [httpd] `groonga_log_level` ディレクティブをサポートしました。

- [httpd] `groonga_cache_limit` ディレクティブをサポートしました。

## 修正

- 式のエラーによってスタックオーバーフローを引き起す可能性のある不具合を修正しました。この変更はエラーが積み重なって突然groongaがクラッシュするのを防ぎます。

- 参照先のないベクタカラムの静的インデックス構築によりクラッシュする不具合を修正しました。

- デーモンモード開始時のエラーでgroongaが終了しない不具合を修正しました。例えば、この不具合は `groonga -d /tmp/non-existence.db` で再現します。

- [dump] 誤ったテーブルの型がダンプされる不具合を修正しました。この不具合はテーブルの型が `TABLE_PAT_KEY` かつ キーが参照型のときに発生します。

- `--cache-limit` のデフォルト値が0になっていた不具合を修正しました。デフォルト値は100に変更されました。

- sub_filter を使用するとメモリリークするのを修正しました。

- [doc] defragコマンドの説明の誤りを修正しました。 [@naoinaさんが報告]

- [doc] 貢献する方法の説明を修正しました。 [GitHub#77] [横山さんがパッチを提供]

- [プラグイン] 複数回データベースを開いているときにクラッシュする不具合を修正しました。この不具合は複数のプラグインが使われていて、同一のデータベースが複数のプロセスによってオープンされているような場合に影響します。[groonga-dev,01596] [村上さんが報告]

- `AND` の後のネストしたマッチが動作しない不具合を修正しました。 `select ... --filter '... && nested.column @ "keyword"'` というクエリでこの不具合が再現します。 [groonga-dev,01599] [鷲田さんが報告]

- 特殊文字のドキュメントの誤字を修正しました。 [瀧内さんが報告]

- 不正な文字が渡されたときのエラーメッセージの誤りを修正しました。[吉田光男さんが報告]

## 感謝

- whombxさん

- @naoinaさん

- 横山さん

- 鷲田基さん

- 瀧内元気さん

- 吉田光男さん

# 3.0.6リリース - 2013-07-29

## 改良

- [doc] sub_filter の引数に関するドキュメントを追加しました。

- [suggest] 0MQ 3.xをサポートしました。[GitHub#63] [稲田さんが報告]

- NetBSD向けに `pthread_{mutex,cond}attr_setpshared()` が使えるかチェックを追加しました。[おばたさんが報告]

- クエリ構文でバックスラッシュでのエスケープをサポートしました。[groonga-dev,01520] [田辺さんが報告]

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

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

- [httpd] バンドルしているnginxのバージョンを1.4.2に更新しました。

## 修正

- 特定の関数(`grn_obj_path()`) が `select` のようなビルトイン関数で呼ばれたときにクラッシュする不具合を修正しました。[瀧内さんが報告]

## 感謝

- 稲田尚也さん

- おばたさん

- 田辺公平さん

- 瀧内元気さん

# 3.0.5リリース - 2013-06-29

## 改良

- [doc] `query()` の `match_columns` と `query_string` 引数のサマリを追加しました。

- subrecordの情報をテーブルのインスペクション時に表示するようにしました。

- シングルクォートした文字列を `output_columns` でもサポートしました。これは "XXX, '...'" といった表現がサポートされたことを意味しています。

- [doc] groongaサーバーを起動する際のroot権限と使用ポートに関する注意を追加しました。 [浅見さんが報告]

- [実験的] html_untag 関数を追加しました。

## 修正

- テーブル作成時に必要なロックをかけていないことでmroongaがクラッシュする不具合を修正しました。 [Y.Kentaroさんが報告]

- ClangやGCCによるコンパイル時の警告を抑制するように修正しました。

- "XXX && sub_filter(...)" という表現をすると `sub_filter(...)` が無視される不具合を修正しました。

- 間違ったタグ名がXMLの出力で使われる不具合を修正しました。この不具合は `output_columns` で "REFERENCE_VECTOR_COLUMN._key" という表現をすると影響を受けます。 参照カラムがXMLの出力に含まれません。

- [doc] `sub_filter()` のドキュメントにおける引数の誤りを修正しました。

- [deb] サービス停止中のステータスとして正しくない終了コードを返す不具合を修正しました。

- 算術演算の結果が壊れる不具合を修正しました。この不具合は例えば `_score` 疑似カラムへと計算結果を代入するような場合に影響します。

## 感謝

- Y.Kentaroさん

- 浅見公輔さん

- @orangainさん

# 3.0.4リリース - 2013-05-29

## 改良

- [tokenizer] ノーマライズした文字列が与えられないときにログメッセージを表示するようにしました。

- `geo_in_circle` の引数に `_key` が使えるようにしました。[@ceekzさんが報告]

- groongaをライブラリとして使うときに、ベクタカラムのキャストをサポートしました。

- Ubuntu 11.10 (Oneiric Ocelot)のサポートをやめました。

- `match_columns` にてマルチセクション対応のインデックス指定をサポートしました。

- `tokenize` コマンドをサポートしました。

- `mmap()` が失敗したときのシステムエラーメッセージの表示をサポートしました。

- [doc][windows] ビルド手順を "cmake --build" でできるように簡略化しました。

- サービススクリプトが応答しなくならないように最大実行時間を制限するようにしました。[GitHub#61] [firewoodさんが報告]

- ベクタを真偽値として評価できるようにしました。この変更で空のベクタはtrueとして評価されるようになります。

- 不要なログメッセージを何度も出さないようにしました。不要なログメッセージは"(N same messages are truncated)"として省略されるようになります。

- [munin][groonga_n_records] `exclude_tables` オプションを追加しました。これによりモニタリング結果から特定のテーブルを除去することができます。

- Debian 8.0 (jessie)をサポートしました。

- プラグインのディレクトリパスを除去することでデータベースファイルのポータビリティを改善しました。

## 修正

- [tokenizer] エラー時のメモリリークを修正しました。

- 空の文字列による類似検索がSEGVを引き起す不具合を修正しました。[groonga-dev,01346] [中井さんが報告]

- "VECTOR_COLUMN != xxx", "VECTOR_COLUMN && xxx" といった式が使われたときにメモリリークする問題を修正しました。

- SIGSTOPとSIGCONTによりgroongaサーバが停止してしまう不具合を修正しました。

- ノーマライザーがノーマライズ済み文字列としてNULLを返したときにクラッシュする不具合を修正しました。 [Y.Kentaroさんが報告]

- デーモン化する課程が OS Xでは動作しない不具合を修正。[groonga-dev,01440] [小西さんが報告]

- [deb] HTTP/GQTPプロセスがroot権限で実行されてしまう不具合を修正しました。

## 感謝

- @ceekzさん

- 中井さん

- firewoodさん

- Y.Kentaroさん

- 小西さん

- @orangainさん

# 3.0.3リリース - 2013-04-29

## 改良

- [suggest] `configuration.weight` を使って学習時の重みづけをカスタマイズできるようになりました。

- 位置情報検索のパフォーマンスを改善しました。例えば、 `geo_in_rectangle` の実行速度が10%程度以前より高速化しています。

- [rpm][centos] `additional_configure_options` パラメータを追加しました。groongaをカスタマイズしてビルドするのにspecファイルを修正する必要はありません。

- KyTea 0.4.5をサポート。

- ベクターに対し "vector[N]" という構文でインデックスを指定してアクセスできるようにした。

- groonga-suggest-create-dataset コマンドに `--default-tokenizer` オプションを追加した。

- groonga-suggest-create-dataset コマンドに `--help` オプションを追加した。

- Ubuntu 13.04 Raring Ringtailをサポート。

# 3.0.2リリース - 2013-03-29

## 改良

- 2つ以上のインデックスをテーブルのキーに対して張れるようにしました。この変更はインデックスを張ったキーへ新たなキーをロードしたときにクラッシュしないようにします。

- `X + Y`, `X - Y`, `X * Y`, `X / Y`, `X % Y`, `X >> Y`, `X << Y`, `X | Y`, `X ^ Y`, `X & Y` や `X >>> Y` といった演算子をInt8, UInt8, Int16, UInt16 や UInt64に対してもサポートしました。

- load コマンドのドキュメントを追加。

- `X += Y`, `X -= Y`, `X *= Y`, `X /= Y`, `X %= Y`, `X <<= Y`, `X >>= Y`, `X >>>= Y`, `X &= Y`, `X |= Y` や `X ^= Y` といった演算子をInt8, UInt8, Int16, UInt16 や UInt64に対してもサポートしました。

- `-X` といった演算子をInt8, UInt8, Int16, UInt16 や UInt64に対してもサポートしました。

- `--output_columns` で複雑な文字列の連結をサポートしました。例えば `--output_columns '"<" + title + ">"'` といったクエリを書けるようになりました。

- 開発ページにgroongaリポジトリの情報を追加しました。

- `sub_filter()` 関数を追加しました。

- `query()` 関数でクエリ展開をサポートしました。この変更で `query("MATCH_COLUMNS", "QUERY","QueryExpanderTSV")` といったクエリが書けるようになりました。

- `--query_expansion` を `--query_expander` に変更しました。 `--query_expansion` は引き続き使えますが、非推奨となります。

## 修正

- `snippet_html(XXX), XXX` を実行すると "stack error"になる不具合を修正しました。この不具合は `--output_columns 'snippet_html(title), content'` といったクエリに影響します。[Groonga-talk (no subject)] [Hendro Wibowoさんが報告]

- インストールのドキュメントの誤字を修正。 [hinoさんが報告]

- Travi-CIセットアップ用のスクリプトが動作しない不具合を修正した。[groonga-dev,01248] [ongaeshiさんが報告]

- メモリリークを修正した。この不具合は次の3つの条件が重なったときに発生します。参照カラムかつそのカラムがベクター型であって、キーのサイズが25バイト以上のとき。

- `--output_columns _score.GARBAGE` というクエリによってクラッシュする不具合を修正した。この不具合はGARBAGEが存在しないときに影響します。

## 感謝

- Hendro Wibowoさん

- hinoさん

- ongaeshiさん

# 3.0.1リリース - 2013-02-28

## 改良

- loadコマンドでデータをロードするときに参照カラムに対するBoolの設定をサポートしました。

- ネストしたインデックスに対してAND検索できるようになりました。この変更で、"COLUMN1.COLUMN2 >= 1 && COLUMN1.COLUMN2 <=3"という検索ができるようになります。ただし、"1 <= COLUMN1.COLUMN2" という表記はまだサポートしていません。これを指定すると、"COLUMN1.COLUMN2 <= 1"とみなします。

- インデックスの張られていない要素に対するソートをサポートしました。この変更は `--sortby geo_distance(...)` のようにインデックス化されていない要素をソートしようとしたときに結果が抜け落ちてしてしまう場合に影響します。

- 参照カラムの範囲検索をインデックスを使って検索できるようにした。この変更でTABLE_PAT_KEYやTABLE_DAT_KEYを使ったネストしたインデックスの `_key` に対しても範囲検索できるようになった。

- [rpm][centos] MeCab 0.995をサポート。

- [doc] `column_rename` や `truncate` コマンドのドキュメントを追加。

## 修正

- `grn_index_cursor_next()` が意図せずNULLを返す不具合を修正しました。このせいで要素を削除した後に不正なインデックスを返していました。この不具合はmroongaをストレージモードで動かしたときに発生します。 [groonga-dev,01192] [b senbokuさんが報告]

- `geo_distance()` をインデックスを使ってソートしようとするときに落ちる不具合を修正しました。この不具合は見付けたレコードのカウントが正しくないことで発生します。

- [httpd] データベースのオーナー/グループのデフォルト設定がgroongaとなっている箇所を有効にしました。

## 感謝

- b senbokuさん

# 3.0.0リリース - 2013-02-09

- バージョン3.0.0になりました!

## 修正

- [deb][rpm] `groonga-tokenizer-mecab` パッケージのインストール時に必要な辞書をEUC-JPでなくUTF-8の辞書ものを明示的にインストールするように修正した。

- int64の表記がuint32の値として切り捨てられてしまう不具合を修正した。int64の文字列として表記した場合には、この不具合の影響はありません。

- [rpm][centos] `groonga-server-http` サービスの停止に失敗する不具合を修正した。 [GitHub#53] [岩井さんがパッチ提供]

## 感謝

- 岩井さん