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

- English

# News - 6.x

## 6.1.5リリース - 2017-01-23

6.1.4のバグフィックスリリースです。6.1.4を使っている人は6.1.5にアップグレードしてください。

### 改良

- 存在しない参照カラムの値に対する二項演算子に対応しました。常に偽になります。

- [logical_select] sort_keys と drilldown_sort_keys と drilldowns[${LABEL}].sort_keys を追加しました。 sortby と drilldown_sortby と drilldowns[${LABEL}].sortby は非推奨になりました。

### 修正

- [select] インデックスを使った検索でマッチするべきレコードがマッチしないことがある問題を修正しました。

## 6.1.4リリース - 2017-01-18

6.1.3のバグフィックスリリースです。6.1.3を使っている人は6.1.4にアップグレードしてください。

### 改良

- [近傍検索演算子] 近いと判断する最大の距離をカスタマイズできるようにしました。

- [近傍検索演算子] いくら離れていても順序が維持されていればヒットできるようにしました。

- `groonga-httpd` をインストールしないときは `groonga-httpd-restart` もインストールしないようにしました。 [GitHub#626] [おばたさんがパッチ提供]

- Mroongaのマルチカラムインデックスのデータのような非自然言語のテキストデータに対するインデックスの更新パフォーマンスを改善しました。[groonga-dev,04219] [宮下さんが報告] [GitHub#617]

- [logical_select] `drilldowns[LABEL]` という形式をサポートしました。 `drilldown[LABEL]` という形式は非推奨になりました。

- システムにインストールされている鬼雲を使えるようになりました。 [GitUub#628] [おばたさんがパッチ提供]

### 修正

- [truncate] メモリーリークを修正しました。対象が TABLE_HASH_KEY または TABLE_PAT_KEY で、対象テーブルにたくさんのトークンフィルターが設定されているときに発生していました。 [GitHub#622] [村上さんがパッチ提供]

- [select] column_rename を実行した後も古いキャッシュが使われる問題を修正しました。

- [select] インデックスを使った検索でマッチするべきレコードがマッチしないことがある問題を修正しました。 [GitHub#624] [村上さんがパッチ提供]

### 感謝

- 村上さん

- おばたさん

## 6.1.3リリース - 2017-01-06

### 改良

- [`grn_db_recover()`][grndb] シングルスレッドモードのメモリ使用量を減らしました。

### 修正

- Groonga 6.1.2で入った、転置インデックスの更新が遅くなるケースの改善を元に戻しました。キーがマルチバイト文字を含む場合にエラーになっていたためです。

- [TokenRegexp] \A${1文字}\z が1文字の値すべてにマッチする問題を修正しました。

## 6.1.2リリース - 2016-12-31

### 改良

- windows: groonga-normalizer-mysqlをバンドルするようにしました。

- [ログ] `PID` に関するログフォーマットの説明を追加しました。

- [CentOS] 最近の `groonga-release` パッケージに関して、インストール手順を改善しました。

- [load] コマンドバージョンが3以降の場合に、 `{"n_loaded_records": N}` をレスポンスに含めるようにしました。

- [load] コマンドバージョンが3以降の場合に、 `--output_ids yes` パラメータを指定できるようにしました。もし `--output_ids yes` が指定されていたら、ロードできたID(`loaded_ids`)が返却されます。IDが0ならロードに失敗したことを意味します。

- [その他] 依存するパッケージ(Zstandard, LZ4)に関してインストール手順を追加しました。

- 正規表現ライブラリーとしてOnigmo 6.0を使うようにしました。

- 実験的扱いだったいくつかの機能を正式版として今後扱うことにしました。

  - grndb コマンド

  - request_cancel コマンド

  - highlight_html 関数

  - highlight_full 関数

  - snippet_html 関数

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

- `AND` 検索時の応答時間を改善しました。[GitHub#618,#619,#620] [村上さんがパッチ提供]

- 転置インデックスの更新が遅くなるケースを改善しました。この修正でメモリ使用量も削減されます。 [groonga-dev,04219] [宮下さんが報告]

### 修正

- `grn_ctx_at` の返り値の `NULL` チェックが抜けているのを修正しました。この修正により意図しないクラッシュを回避できるようになります。

### 感謝

- 村上さん

- Masanori Miyashita

## 6.1.1リリース - 2016-11-29

### 改良

- [select] 以下の関数をslicesでサポートしました。

  - between
  - geo_in_circle
  - geo_in_rectangle
  - in_values
  - fuzzy_search
  - query

- [groonga-httpd] PIDのログ出力をサポートしました。複数のワーカープロセスを区別するのに便利です。メッセージは `TIMESTAMP|MARK|PID: MESSAGE` というように記録されます。

- [ja] 小さなデータは圧縮するのをやめるようにしました。カラムのデータサイズが256バイト以下のときには `COMPRESS_ZLIB` や `COMPRESS_LZ4`、 `COMPRESS_ZSTD` といったフラグが指定されていても圧縮しません。この変更により、パフォーマンスやディスク使用効率が改善します。

- [column_create] Zstandardをサポートしました。この機能を有効にするには `COMPRESS_ZSTD` フラグを使います。

- [rpm][centos] ZstandardをCentOS 6以降のパッケージで有効にしました。

- [between] `between()` のターゲットに `_key` を `between(_key, ...)` として指定できるようになりました。

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

### 修正

- 不必要なインデックスのチェックのせいで間違ったエラーが報告される不具合を修正しました。これはデフォルトのカラムの値である0が語彙表にすでに存在している場合に発生し、"[ii][delete][one] failed to allocate a segment: ..." といった意図しないエラーメッセージを表示します。

- [logical_table_remove] `--dependent yes` を指定しているときに、エラーを返すことがある不具合を修正しました。この不具合により、一つ以上のカラムが同じテーブルを参照しているときにエラーが発生していました。

- [sort] ソートキーが圧縮されているカラムであり `--query` や `--filter` が同時に使われている場合にクラッシュする不具合を修正しました。

## 6.1.0リリース - 2016-10-29

### 改良

- [dump] ダンプ結果をloadするテーブル名の出力順をIDではなく、名前順にしました。これは非互換な変更ですが、dump結果を比較しやすくできます。

- [table_create][column_create] 古くなっていた記述を実行例も含めて改訂しました。英語版に加え、より小さなサイズのインデックスカラムに関する節も公開しました。

- [実験的][httpd] groonga-httpd.confの設定をカスタマイズするのにmrubyをサポートしました。

- [windows] バンドルしている Groonga Admin を 0.9.5に更新しました。メモリ使用量が大幅に減っているのでアップグレードを推奨します。このバージョンでは、Groonga 5.0.8以前をサポートしていないことに注意してください。

- トークンとそのIDをエラー時にログに記録するようにしました。 [Gitter:groonga/ja:58043f77614116a2568d529c] [torinkyさんが提案]

- [テーブル] レコードIDの最大値の記述を更新しました。

- [mruby] `time` の値を保持する `mrb_value` を `grn_bulk` へ変換できるようにしました。 [GitHub:#607] [村上さんがパッチ提供]

- [ubuntu] Ubuntu 16.10 (Yakkety Yak)をサポートしました。

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

### 修正

- インデックスカラム名がログに記録されるかわりに、インデックスカラムのテーブル名が記録されている不具合を修正しました。

- インデックスを使った検索時に実行しているポスティングリストをスキップする最適化で間違った場所にスキップしてしまうことがある問題を修正しました。[Gitter:groonga/ja:57f2ff87d45d7f0f525e2216] [torinkyさんが報告]

- 静的インデックス構築時にメモリリークする問題を修正しました。

- [hash] 数多くのトークンフィルターが設定されている場合にメモリリークする問題を修正しました。

- [select] 数値から始まる誤ったカラム名を `output_columns` に指定したときに無視されずにシンタックスエラーとなる不具合を修正しました。

### 感謝

- torinkyさん

- 村上さん

## 6.0.9リリース - 2016-09-29

### 改良

- [logical_table_remove] 壊れたテーブルやカラムを削除できるようになりました。 `force` パラメータで強制的に削除できます。

- [select] match_columns, query, query_flags や query_expander を slices でサポートしました。

- [http][httpd] 不完全なJSONがPOSTされても大丈夫なようにしました。JSONの妥当な部分だけを処理します。

- [httpd] カスタムログファイルが指定されていたら、デフォルトのログファイルを作成しないようにしました。

- デフォルトのロックタイムアウトの値を2.7時間から15分へと短縮しました。

- [groonga-httpd] "~" を "location" でサポートしました。"location ~ /d/..." などと指定します。

- [mruby] Visual Studioでのビルドエラーを修正するために最新のmrubyに更新しました。

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

### 修正

- OpenBSDでのビルドエラーを修正しました。OpenBSDでは `TCP_NODELAY` を提供していないためです。[MariaDB JIRA: fix MDEV-7209] [Brad Smithさんが報告]

- インデックスの削除チェック漏れを修正しました。ヒットすべきものが検索結果から漏れてしまっていました。Groonga 6.0.3以降がこの問題の影響を受けます。 [groonga-dev, 04107] [かずひこさんが報告]

- [doc] Groonga 6.0.2のニュースでフォールバックとしてシーケンシャルサーチが geo_in_circle にも適用されるというのが記載されていないのを修正しました。[株式会社ぐるなびさんが報告]

- [table_create] `table_create` コマンドがキーの種類の指定がないのに `TABLE_PAT_KEY` `TABLE_HASH_KEY` や `TABLE_DAT_KEY` テーブルを作れてしまう不具合を修正しました。[GitHub#599]

- [admin] 新規レコードが作成できない不具合を修正しました。

- selectコマンドに誤ったフィルタを指定するとクラッシュする不具合を修正しました。

### 感謝

- Brad Smithさん

- かずひこさん

- 株式会社ぐるなびさん

## 6.0.8リリース - 2016-08-29

### 改良

- [object_list] `value_size` や `n_elements` といったメタデータのプロパティを表示できるようにしました。

- セレクタごとにオペレータを指定できるようになりました。この変更でセレクタごとにインデックスを正しく選択できるようになりました。例えば `between()` が範囲検索のためのインデックスを選択したり、 `in_values()` が等価比較のためのインデックスを選択したりできるようになりました。 [GitHub#589] [村上さんが報告]

- [debian] これまではGroongaの [log_reopen] コマンドを使っていましたが、nginxのログを再オープンする機能を使うようにしました。これは `log_reopen` コマンドがワーカー1つのときだけきちんと動作するためです。nginxのログを再オープンする機能は複数のワーカーに対しても問題なく動作します。

- [table_copy] 指定したテーブルをコピーするための `table_copy` コマンドを追加しました。

- [column_copy] AテーブルのレコードをBテーブルのレコードにキャストできるようにしました。この修正により以前のバージョンで `column_copy` したときに失敗していた問題が解消します。ただし、どちらのテーブルも `key` をサポートしていなければいけません。

- [column_copy] 参照型のベクタをサポートしました。

- [admin] レスポンスがなくエラーになる場合に対応しました。"Loading..."メッセージが表示されたままになる問題が解消します。

- [groonga 実行ファイル][http] 実装していない関数に対して400 Bad Requestを返すようにしました。

- [groonga-httpd] 失敗時にレスポンスボディを返すようにしました。

- [groonga-httpd] 大規模なデータをストリーム処理できるようになりました。

- `key` がインデックスカラムのソースカラムとして指定されているときに、シーケンシャルサーチを `_key` でできるようになりました。

- ログレベルが `info` のときに、データカラムに対するアクセサが選んだインデックスの情報を表示できるようになりました。

- [column_create] インデックスのソースを設定する際に、語彙表の妥当性チェックを追加しました。もしユーザーが `column_create` で間違ったインデックスを作成しようとすると、この妥当性チェックで詳細を表示します。

- [制限事項] テーブルの制限に関する説明を更新しました。

### 修正

- [column_create] ログを記録する際にバッファオーバーフローが発生する不具合を修正しました。

- クリティカルなエラーが発生したときでも、レスポンスを出力するようにしました。

- `grn_ctx_send` が呼ばれるたびに、出力バッファをクリアするようにしました。ときどきレスポンスが壊れてしまう問題がおそらくこれで解決します。[GitHub#330]

- [fuzzy_search] `prefix_match_size` オプションが間違ったノードを返してしまう不具合を修正しました。このせいで `fuzzy_search` が間違った編集距離を返していました。 [GitHub#590] [村上さんがパッチ提供]

- [load] カラムの値を設定するときに失敗したらエラーを報告するようにしました。カラムの型と実際の値が一致していないときに気づけるようになります。

- [groonga-httpd] 成功時に誤った HTTP ステータスが設定されている不具合を修正しました。

- [fuzzy_search][in_values] シーケンシャルサーチでレコードIDを正しく解決するようにしました。[GitHub#591,#592,#593] [村上さんがパッチ提供]

### 感謝

- 村上さん

## 6.0.7リリース - 2016-07-29

### 改良

- [string_substring] 部分文字列を取得するための `string_substring` 関数を追加しました。 `string_substring` の構文は `string_substring(string, from, [length])` です。[GitHub#564] [村上さんがパッチ提供]

- [実験的] `GRN_II_MAX_N_SEGMENTS_TINY` と `GRN_II_MAX_N_CHUNKS_TINY` という環境変数を追加しました。これはセグメントやチャンクの最大値のデフォルト値をカスタマイズするのに使います。この機能はスカラー値を保存しているカラムに対して作成したインデックスカラムに影響します。最大値を調整することでメモリー使用量を削減することができますが、まだ十分にテストされていません。

- [vector_slice] ベクターカラムの特定の要素を取りだすことのできる `vector_slice` 関数を追加しました。 [GitHub#582] [村上さんがパッチ提供]

- PATやDATテーブルでインデックスを使った `_key` の範囲検索をサポートしました。 [GitHub#583]

- [object_list] デバッグ用途に `object_list` コマンドを追加しました。データベースの破損を診断するのに便利です。

- `object_list` のレスポンスをチェックするスクリプトを追加しました。

- [mruby] `expression_rewriter` でバルクオブジェクトからFloatの値を取り出せるようにしました。 [GitHub#587] [村上さんがパッチ提供]

- [dump] ダンプ結果のテーブルの出力順をIDではなく、名前順にしました。これは非互換な変更ですが、これまでどおりリストアすることができます。

- [Windows] バンドルしているmsgpackを2.0.0に更新しました。

- [windows] groonga-suggest-create-dataset コマンドを含めるようにしました。

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

- [deb] Ubuntu 15.10 (Wily werewolf)のサポートをやめました。

### 修正

- [examples edict] `gzcat` があれば、 `zcat` のかわりにそちらを使うようにしました。[GitHub#576] [玉野さんがパッチ提供]

- 参照値を取得する前にポインタのnullチェックを追加しました。 [GitHub#579] [皆川さんがパッチ提供]

- インデックスが利用可能であれば、シーケンシャルサーチをしないようにしました。[GitHub#580]

- [load] `Time` カラムの値の精度が落ちてしまう不具合を修正しました。 [GitHub#581]

- 複数の論理演算を実行する際、オブジェクトリテラルの実装に問題があったのを修正しました。 [GitHub#584] [村上さんがパッチ提供]

- `Float`、`WGS84GeoPoint`、`TokyoGeoPoint` が指定していなくても `GRN_OBJ_COMPRESS_ZLIB` フラグつきで作成されてしまう不具合を修正しました。 [GitHub#586] [村上さんが報告]

### 感謝

- 村上さん

- 玉野裕也さん

- 皆川さん

## 6.0.5リリース - 2016-06-29

### 改良

- [io_flush] 正式なコマンド扱いにしました。

- [mruby] マッチ件数を効率よく見積ることで、前方一致検索を最適化しました。

- [fuzzy_search] 第3引数として `max_distance` オプションを受けつけるようにしました。よく使うオプションを指定しやすくなります。[GitHub#553] [GitHub#183] [村上さんがパッチ提供]

- [query_expand] クエリ展開のコマンドをサポートしました。同義語がたくさんあるときに使うと便利です。

- [select] `--drilldown` を `command_version=3` でも使えるようにしました。 [groonga-dev,04055] [村上さんが報告]

- `grn_table_select_sequential()` の無駄なコードを削除しました。[GitHub#560] [皆川さんが報告]

- grn_table_setoperation(): `GRN_OP_ADJUST` でスコアを上書きするのではなく、加算することにしました。この変更は `grn_ii_posting_add()` との一貫性を保つために行いました。[groonga-dev,04058] [村上さんが報告]

- [dump] 1スレッドで動作しているときに開くテーブルやカラムの最大数を減らすようにしました。

### 修正

- [CMake][Windows] mrubyスクリプトのインストール漏れを修正しました。 [groonga-dev,04040] [清川さんが報告]

- [Windows] msgpack-cのソースコードをバンドルするようにしました。

- [その他] デフォルトのデータベースエンコーディング(utf8)の記述誤りを修正しました。 [GitHub#549] [岩井さんがパッチ提供]

- [ユーザーと協力して開発をうまく進めていくための指針] 製品名の記述の誤り(Twitter)を修正しました。 [GitHub#550] [岩井さんがパッチ提供]

- 検索結果から特定のレコードが漏れてしまう不具合を修正しました。マルチカラムインデックスを `WITH_SECTION` フラグ付きで静的構築していると発生します。 [GitHub#551]

- `GRN_II_CURSOR_SET_MIN_ENABLE=yes` が有効な状態でデータをロードしている最中に検索するとクラッシュする不具合を修正しました。 `GRN_II_CURSOR_SET_MIN_ENABLE` はGroonga 6.0.3からデフォルトで有効になりました。

- [トークンフィルター] スレッドセーフでない実装であったのを修正しました。

- [doc] Groonga 6.0.4のリリースエントリの誤字を修正しました。 [GitHub#559] [cafedomancerさんがパッチ提供]

### 感謝

- 村上さん

- 清川さん

- 岩井さん

- cafedomancerさん

## 6.0.4リリース - 2016-06-06

6.0.3のバグフィックスリリースです。Groonga 6.0.3ユーザーは6.0.4へアップグレードすることを推奨します。このリリースはいくつかの検索関連の問題を修正しています。

### 修正

- [select] `--columns` で作成した一時カラムに対する `--drilldown` が解放済みのメモリーを参照する問題を修正しました。

- 大きなインデックスを使って検索した場合、不正なデータを参照することがある問題を修正しました。この問題が発生すると検索結果が返るまで長い時間がかかります。 [GitHub#548][groonga-dev,04028][篠田さんが報告]

### 感謝

- 篠田さん

## 6.0.3リリース - 2016-05-29

### 改良

- [実験的] `GRN_II_OVERLAP_TOKEN_SKIP_ENABLE` と `GRN_NGRAM_TOKENIZER_REMOVE_BLANK_DISABLE` 環境変数をN-gramトークナイザーのパフォーマンス向上のために追加しました。[GitHub#533][村上さんがパッチ提供]

- [table_create] 存在しないデフォルトトークナイザーやノーマライザー、トークンフィルターを指定したときに無視しないようにしました。過去のバージョンでは `--default_tokenizer` や `--normalizer` 、 `--token_filters` の指定が誤っていても無視するだけで、何もエラー表示をしていませんでした。 これは問題の発覚を遅らせてしまっていました。

- [select] output_columns v1: `snippet_html(...)` などの式を output_columns に指定できるようにしました。

- [select] ラベルつきドリルダウンの制限をなくしました。これまでは、ラベルつきドリルダウンの最大数は10に制限されていました。

- [number_classify] `number` プラグインを追加しました。`number_classify` を使うと同じような値を1つにまとめることができます。価格帯ごとにまとめたいときに有用です。

- `time` プラグインを追加しました。`time_classify_second`, `time_classify_minute`, `time_classify_hour`, `time_classify_day`, `time_classify_week`, `time_classify_month`, `time_classify_year` 関数を使うと同じようなタイムスタンプごとにまとめることができます。

- [select] 動的カラムをサポートしました。 `output_columns` 、 `drilldown` 、 `sortby` で動的カラムを指定できます。 [GitHub#539,#541,#542,#544,#545][村上さんがパッチ提供]:

      select \
        --columns[LABEL].stage filtered \
        --columns[LABEL].type ShortText \
        --columns[LABEL].flags COLUMN_SCALAR \
        --columns[LABEL].value 'script syntax expression' \
        ...

- [実験的][select] 範囲検索で十分にフィルタされている場合のパフォーマンスを改善しました。 有効にするには、 `GRN_TABLE_SELECT_ENOUGH_FILTERED_RATIO` 環境変数に値を設定します。

- [select] フィルタした結果テーブルに対してインデックスを使って検索できるようになりました。

- データベースを変更後に閉じられていない場合を検出できるようになりました。Groongaが意図せずクラッシュしたときなど、データベースの整合性が失なわれてしまったかどうかを確認するのに便利です。

- [grndb] データベースが正常に閉じられなかった場合を検出できるようになりました。

- `--drilldown_filter` を追加しました。

- ラベルつきドリルダウンで `filter` をサポートしました。

- インデックスを使わない場合の [between] のパフォーマンスを改善しました。between()の最適化で以前のバージョンに比べ、100倍範囲検索が高速になる場合があります。

- [record_number] ウィンドウ関数をサポートしました。

- [実験的][select] `--slices` をサポートしました。

- [select] `--sortby` と `--drilldown_sortby` は非推奨になりました。 `--sort_keys` と `-drilldown_sort_keys` を使うようにしてください。

- [select] `--drilldown[...]` は非推奨になりました。 `--drilldowns[...]` を使うようにしてください。

- [コマンドバージョン 3] を追加しました。コマンドバージョン3ではオブジェクトリテラル表記になります。

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

### 修正

- [select] output_columns v2: `*` が正しく展開されない不具合を修正しました。

- タイムスタンプの値から1usecの情報が失なわれてしまう不具合を修正しました。

- mrubyのプラグインが複数のスレッドから初期化されるとクラッシュする不具合を修正しました。

- ポスティングリストが非常に長くなると、静的インデックス構築時にクラッシュする不具合を修正しました。これはデータベースのサイズが非常に大きいと発生する可能性があります。

### 感謝

- 村上さん

## 6.0.2リリース - 2016-04-29

### 改良

- 比較オペレータ(`>`, `>=`, `<`, `<=`)でbool値をサポートしました。TRUEは1、FALSEは0とみなします。これによりbool値を返す関数を比較の際に使えるようになりました。

- [groonga-http][リクエストタイムアウト] `request_timeout` パラメータをサポートしました。リクエストがキャンセルされたときには、ステータスとして `HTTP/1.1 408 Request Timeout` を返します。

- [table_tokenize] `index_column` オプションを追加しました。[GitHub#534] [村上さんがパッチ提供]

- [table_tokenize] `estimated_size` を出力できるようにしました。 [GitHub#518] [村上さんがパッチ提供]

- [geo_in_rectangle][geo_in_circle] インデックスがなくても動作するようにしました。その場合、シーケンシャルサーチへとフォールバックして動作します。

- 不必要なループ処理を除去しました。これによりフレーズ検索のパフォーマンスが向上します。[GitHub#519] [村上さんがパッチ提供]

- [Groongaへのコントリビュート方法] コントリビューション方法のドキュメントを更新しました。[GitHub#522] [Hiroshi Ohkuboさんがパッチ提供]

- [リターンコード] リターンコードのドキュメントを更新しました。

- [groonga 実行ファイル] `--default-request-timeout` オプションのドキュメントを追加しました。

- [windows] DLLのバージョン表示に対応しました。

- 即値のみ指定されていても、インデックスを使って検索できるようにしました。例えば、`true || column > 0` というクエリでは `column` のインデックスがあっても使われませんでした。今回のリリースではインデックスが使われない問題が解決しています。

- [select] 多段ドリルダウンをサポートしました。[GitHub#524,#526,#527,#528,#529] [村上さんがパッチ提供]

- `Int{8,16,64}/UInt{8,16,64}` 型のグループ化をサポートしました。以前のバージョンでは32bitのみがサポートされていました。

- ソートキーの指定がおかしいときにテーブル名もエラーメッセージに含めるようにしました。

- [groonga-suggest-httpd] ドキュメントを更新しました。

- [補完] 実行例の誤字を修正しました。[groonga-dev,04008] [立川さんが報告]

- [grndb] 後方互換を保つようにしました。ただし、`inspect` のかわりに `object_inspect` を使うようにしてください。

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

- [rpm][centos] systemdをサポートしました。

- [doc] HTML形式のドキュメントのみをサポートするようにしました。 [GitHub#532] [Hiroshi Ohkuboさんがパッチ提供]

- [groonga-httpd][centos] 環境変数をカスタマイズできるようにしました。

- [その他] `--with-package-platorm` オプションのドキュメントを更新しました。

- [ubuntu] Ubuntu 16.04 (Xenial Xerus)をサポートしました。

### 修正

- 空文字列のトークナイズ処理が失敗する不具合を修正しました。例えば、 `description` というカラムがあるとします。そのカラムがインデックスカラムのときに値が空の文字列を与えてトークナイズしようとすると、エラーになっていました。 [GitHub#508] [村上さんが報告]

      load --table docs
      [
      ["_key","description"],
      [2,""]
      ]

- クリティカルセクションの処理が原因でクラッシュする不具合を修正しました。 [GitHub#507]

- [リリース手順] grntestの使いかたに関する誤字を修正しました。 [GitHub#511] [Hiroshi Ohkuboさんがパッチ提供]

- [doc] manのサポートをやめました。

- ユーザーを混乱させかねない誤ったデバッグログを出力しないようにしました。

- 内部で使っているカウンタが誤って初期化されることでデータが正しくフラッシュされない不具合を修正しました。以前のバージョンでは、データ量が一定のサイズを越えると、インデックスを作成するのに失敗していました。 [GitHub#517] [村上さんが報告]

- 1つのプロセスが複数のキャッシュを並列で扱えない不具合を修正しました。 [GitHub#515]

- メモリリークを検出するために内部で使われている `alloc_info` 構造体の排他処理ができていない問題を修正しました。この修正がないとクラッシュする可能性があります。 [GitHub#523]

- [tokenizer mecab] Groongaと辞書のエンコーディングが一致していないとき、エラーでメモリリークするのを修正しました。 [groonga-dev,04012] [村上さんが報告]

- [groonga-suggest-httpd] と [groonga-suggest-learner] の組み合わせが動作しない不具合を修正しました。

- [doc] *.poから必要のないUUIDを削除しました [GitHub#531] [Hiroshi Ohkuboさんがパッチ提供]

- [highlight_html] 重複したテキストを返す不具合を修正しました。この不具合はハイライトされたキーワードが1024以上あるときに発生していました。

- `TABLE_HASH_KEY|KEY_LARGE` を以前のバージョンで使っていると、データベースが壊れる可能性がある不具合を修正しました。テーブルを再作成してください。

### 感謝

- 村上さん

- Hiroshi Ohkuboさん

- 立川さん

## 6.0.1リリース - 2016-03-29

### 改良

- [mruby] GCとバックトレースに関連してクラッシュするバグを修正するため、バンドルしているmrubyを更新しました。

- 以下のAPIを公開しました。

  - grn_expr_take_obj()
  - grn_request_canceler_cancel_all()
  - grn_obj_remove_dependent()
  - grn_obj_is_text_family_type()

- [hash] KEY_LARGE フラグがテーブルに設定されていれば、キーの総サイズが4GiBの制限を超えられるようにしました。:

      table_create Users TABLE_HASH_KEY|KEY_LARGE ShortText

- [load] 入力データをパラメーターの値ではなく生のJSONで指定したときでも リクエストID を受けつけるようにしました。

      POST /d/load?table=XXX&request_id=x

      load --table XXX --request_id x
      [
        ...
      ]

- [shutdown] 即座に `shutdown` するために `mode` 引数を追加しました。 `shutdown --mode immediate` というように使用します。

- [Mac OS X] MeCab辞書をHomebrewでセットアップする手順を追加しました。

- [load] キャンセル要求があったときにloadをとりやめられるようにしました。

- [table_remove] 依存関係のあるテーブルを削除できるようにしました。 `--dependent yes` を使います。

- [logical_table_remove] 依存関係のあるテーブルを削除できるようにしました。

- [windows] Windows上でメモリデバッグモードをサポートしました。

- メモリデバッグモードのstatusでメモリの確保情報をダンプできるようにしました。

- [国際化] Sphinxのインストール手順を追加しました。

- [実験的] インデックスの静的構築において、チャンクを分割できるようにしました。有効にするには `GRN_INDEX_CHUNK_SPLIT_ENABLE=yes` を設定します。[GitHub#479]

### 修正

- [load] 存在しないカラムを指定したときに、クラッシュする不具合を修正しました。[GitHub#493]

- [load] loadコマンドが適切なエラーコードを返さない不具合を修正しました。[GitHub#495]

- [load] loadコマンドのカラムパラメータをパースするときにメモリリークしているのを修正しました。

- [load] `--columns` が指定されていないとき、 `--values` に含まれる最初の配列がカラム名のリストとして扱われてしまう不具合を修正しました。[GitHub#497]

- [load] `--columns` をより厳密にチェックするようにしました。[GitHub#496]

- スレッドセーフにするのに不十分なクリティカルセクションの扱いを修正しました。

- [column_create] カラムを作成するのに失敗したときにクラッシュする不具合を修正しました。

- [table_remove] 存在しないテーブルを削除しようとするとクラッシュする不具合を修正しました。

- `WITH_POSITION` フラグつきの(保存しているのがテキストでない)ベクターカラムに対してオフラインインデックス構築をすると位置情報が無視されてしまう不具合を修正しました。

- [grndb] 循環参照していると、スタックオーバーフローを引き起す不具合を修正しました。

- [deb] Ubuntu 15.04 (Vivid Vervet)のサポートをやめました。

### 感謝

- 結城洋志（Piro）さん

## 6.0.0リリース - 2016-02-29

### 改良

- [grndb] `--target` モードのとき、テーブルのドメインに指定されているテーブルもチェックするようになりました。

- [`grn_pat_fuzzy_search()`] パトリシアトライを用いた曖昧検索機能を提供する新しいPAIを追加しました。 [GitHub#460][村上さんがパッチ提供]

- [`functions/string`] 文字列関連の関数を提供する新しいプラグインを追加しました。 [GitHub#459][村上さんがパッチ提供]

- [`string_length()`] 指定した文字列中の文字の数を返す新しい関数を追加しました。この関数は `functions/string` プラグインに含まれています。 [GitHub#459][村上さんがパッチ提供]

- [`grn_table_fuzzy_search()`] 曖昧検索機能を提供する新しいDB APIを追加しました。 [GitHub#463][村上さんがパッチ提供]

- [`GRN_OP_FUZZY`] 新しい演算子を追加しました。 [GitHub#463][村上さんがパッチ提供]

- [`grn_obj_search()`] `GRN_OP_FUZZY` 演算子をサポートしました。 [GitHub#463][村上さんがパッチ提供]

- [`GRN_TABLE_FUZZY_SEARCH_WITH_TRANSPOSITION`] `grn_table_fuzzy_search()` 用のフラグを追加しました。 [GitHub#463][村上さんがパッチ提供]

- [`GRN_TOKENIZE_ONLY`] 語彙表に存在しないトークンでもすべてのトークンを返す新しいトークナイズモードを追加しました。 [GitHub#463][村上さんがパッチ提供]

- [`grn_obj_type_to_string()`] `GRN_VOID` や `GRN_BULK` といったタイプIDを文字列に変換する新しい関数を追加しました。

- [object_inspect] 対象オブジェクトに関する情報を返す新しいコマンドを追加しました。

- ベクターに対する比較演算をサポートしました。左辺のベクターが `左辺の要素 （演算子） 右辺` を満たす要素を1つでも含んでいれば真になります。

  例:

      [1, 2, 3] < 2 # -> true because 1 is less than 2
      [1, 2, 3] > 4 # -> false because all elements are less than 4

- [`fuzzy_search()`] 曖昧検索機能を提供する新しい関数を追加しました。 [GitHub#464][村上さんがパッチ提供]

- [edit_distance] 文字の置換を検出するモードに切り替えるフラグをサポートしました。 [GitHub#464][村上さんがパッチ提供]

- `vector_column[2] == 29` というような式をインデックスを使って検索できるようになりました。

- [`GRN_PLUGIN_CALLOC()`] `calloc()` 機能を提供するプラグイン向けの新しいAPIを追加しました。 [GitHub#472][村上さんがパッチ提供]

- `vector_column[2] < 29` のようなベクターの特定要素に対しての比較演算をインデックスを使って検索できるようになりました。

- [`grn_plugin_proc_get_var_bool()`] 真偽値の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。

- [`grn_plugin_proc_get_var_int32()`] 32bit整数の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。

- [`grn_plugin_proc_get_var_string()`] 文字列の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。

- [object_remove] オブジェクトを削除する新しいコマンドを追加しました。 `object_remove` は壊れたオブジェクトも削除できます。

- mips/mpiselをサポートしました。 [debian-bugs:770243][岩松さんが報告][Thorsten Glaserさんが報告][YunQiang Suさんが報告][Dejan Latinovicさんが報告][Steve Langasekさんが報告]

- [grndb][CMake] 対応しました。

- [`grn_expr_syntax_expand_query()`] クエリー展開機能を提供する新しいAPIを追加しました。

- [`snippet()`] スニペット機能を提供する新しい関数を追加しました。 [GitHub#481][村上さんがパッチ提供]

- [`highlight()`] ハイライト機能を提供する新しい関数を追加しました。 [GitHub#487][村上さんがパッチ提供]

- `XXX && column != xxx` という式の最適化をサポートしました。内部で `XXX &! column == xxx` に変換します。

- [Memcachedバイナリプロトコル] `--memcached-column` を追加しました。memcachedプロトコルで既存のカラムにアクセスできます。

- [groonga-httpd] TLSをサポートしました。 [groonga-dev,03948][北市さんが報告]

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

- [Windows][CMake] LZ4をサポートしました。LZ4はバンドルしています。

### 修正

- [select] カラム出力処理にエラー処理を追加しました。 [GitHub#332][横山さんが報告]

- `function(インデックスがあるカラム) == 29` が `function()` を無視する問題を修正しました。 [groonga-dev,03884][村上さんが報告]

- [reindex] `reindex` がクエリーキャッシュをクリアーしない問題を修正しました。

- [パトリシアトライ] パトリシアトライのキーが整数のとき、キーでソートするとソートされていない結果が返る問題を修正しました。 [GitHub#476][佐藤竜之介さんが報告]

- [select] `--query` に大量のキーワードを指定したときにクラッシュする問題を修正しました。 [GitHub#484][佐藤博之さんが報告]

- [select] コマンドバージョン または プリティープリント を使ったときに間違ったキャッシュが使われる問題を修正しました。 [GitHub#490][北市さんが報告]

### 感謝

- 横山さん

- 村上さん

- 岩松信洋さん

- Thorsten Glaserさん

- YunQiang Suさん

- Dejan Latinovicさん

- Steve Langasekさん

- 佐藤竜之介さん

- 佐藤博之さん

- 北市真さん