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

- English

# お知らせ

## 7.0.1リリース - 2017-03-29

### 改良

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

  - grn_ii_cursor_next_pos()
  - grn_table_apply_expr()
  - grn_obj_is_data_column()
  - grn_obj_is_expr()
  - grn_obj_is_scalar_column()

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

- [load] `array<object>` スタイルの重み付きベクターカラムのloadをサポートしました。 `array<object>` の例: `[{"key1": weight1}, {"key2": weight2}]`

- インデックスを使った `!(XXX OPERATOR VALUE)` の検索をサポートしました。演算子として `>` だけでなく、 `>=`、 `<`、 `<=`、 `==` や `!=` も使えます。

- インデックスを使って `!(column == CONSTANT)` を検索できるようになりました。例えば `!(column == 29)` などです。

- `!` の最適化を以下のパターンでサポートしました。

  - `!(column @ "X") && (column @ "Y")`
  - `(column @ "Y") && !(column @ "X")`
  - `(column @ "Y") &! !(column @ "X")`

- `XXX || !(column @ "xxx")` をインデックスを使って検索できるようになりました。

- [dump] `'{"x": 1, "y": 2}'` というスタイルを参照されていない重み付きベクターカラムで使うようにしました。この変更は古いGroongaには影響しません。もともとサポートされているからです。

- [実験的] `GRN_ORDER_BY_ESTIMATED_SIZE_ENABLE` 環境変数をサポートしました。この変数はクエリの最適化を予想されるヒット件数に応じて行うかどうかを切り替えるのに使用します。この機能はデフォルトでは無効です。有効にするには `GRN_ORDER_BY_ESTIMATED_SIZE_ENABLE=yes` を指定します。

- [select] `columns` や `drilldown` の評価結果をクエリログに追加するようにしました。

- [select] `drilldown` のクエリログのフォーマットを変更しました。これは非互換な変更ですが、クエリログを変換するようなプログラムを独自に開発しているユーザー以外には影響ありません。

- [table_remove] 一時的なメモリ使用量を削減しました。スレッドの最大数が0のときに有効になります。

- [select] `columns[LABEL](N)` がクエリログのフォーマットとして使われます。以前は `columns(N)[LABEL]` でした。

- [クエリ拡張] ベクターカラムを使った推奨例に更新しました。[ぐるなびさんが報告]

- ロック中にリクエストがキャンセルされたことを検出できるようにしました。これは `request_cancel` がロック中に意図せず無視されないようにします。

- [logical_select] `initial` および `filtered` 動的カラムをサポートしました。使用例は `--columns[LABEL].stage initial` や `--columns[LABEL].stage filtered` です。

- [logical_select] `match_columns` や `query` 、 `drilldown_filter` オプションをサポートしました。

- [highlight_html] 類似文書検索をサポートしました。

- [logical_select] `initial` および `filtered` 動的カラムをサポートしました。使用例は `--columns[LABEL].stage initial` や `--columns[LABEL].stage filtered` です。

- [logical_select] 動的カラムでウィンドウ関数をサポートしました。

- [select] 動的カラムに関するドキュメントを追加しました。

- [ウィンドウ関数] ウィンドウ関数のセクションをドキュメントに追加しました。

- [CentOS] EOLのため、CentOS 5のサポートをやめました。

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

- ANDでのマッチ最適化を環境変数で無効化できるようにしました。この機能は `GRN_TABLE_SELECT_AND_MIN_SKIP_ENABLE=no` を設定することで無効化できます。デフォルトでは有効になっています。

- [vector_new] 新規ベクターを作成するための関数を追加しました。

- [select] `drilldown_filter` のドキュメントを追加しました。

### 修正

- [lock_clear] テンポラリデータベースに対して実行するとクラッシュする不具合を修正しました。

- 自然言語に対する動的インデックス更新でインデックスサイズが肥大化する問題を修正しました。Groonga 6.1.4から発生していました。

- [select] "A && B.C @ X" というクエリでマッチすべきレコードを返さないことがある不具合を修正しました。

- `grn_io_flush()` と `grn_io_expire()` がコンフリクトする問題を修正しました。この修正がないと、 `io_flush` と `load` が同時に特定のタイミングで実行されるとクラッシュする不具合がありました。

- [logical_table_remove] 最大スレッド数が1のときにクラッシュする不具合を修正しました。

### 感謝

- 株式会社ぐるなびさん

## 7.0.0リリース - 2017-02-09

### 改良

- [in_values] 参照型ベクターカラムのシーケンシャルサーチに対応しました。 [GitHub#629] [村上さんがパッチ提供]

- [select] 誤った `drilldown[LABEL].sort_keys` が指定されたとき、無視するのではなく、エラーを報告するようにしました。

- [select] DBのメタデータを不必要に更新しないようにしました。 `select` コマンドを使っているだけなのにDBにロックがかかったままになってしまうのを防ぎます。

- [lock_clear] `lock_clear` でDBのメタデータに対するロックも削除できるようにしました。

- [CentOS] GroongaをAmazon LinuxでもインストールできるようにEPELをデフォルトで有効にするようにしました。

- [query] `default_mode` オプションで "@X" スタイルのエイリアスが使えるようになりました。

- [query] 動作モードのリストに関するドキュメントを更新しました。動作モードの既定値は `MATCH` ("@") で全文検索を実行します。

- [rpm][centos] CentOS 7で groonga-token-filter-stem パッケージを提供するようにしました。 ステミングに対応するための `TokenFilterStem` トークンフィルターを提供します。　[GitHub#633] [Tim Bellefleurさんが報告]

- [window_record_number] `record_number` が非推奨になりました。代わりに `window_record_number` を使ってください。 `record_number` は互換性のためだけに残っています。

- [window_sum] `window_sum` ウィンドウ関数を追加しました。PostgreSQLのsum()と同様のウィンドウ関数を提供します。

- `TABLE_DAT_KEY` テーブルをインメモリで使ったときに静的インデックス構築をできるようにしました。 [GitHub#623] [村上さんが報告]

- バンドルしている鬼雲を6.1.1へと更新しました。

- `columns[LABEL].window.group_keys` をサポートしました。ウィンドウ関数をグループごとに提供することができます。

- [load] 誤ったキーが指定されていたときにエラーを報告するようにしました。キーの型が異なっている場合でも気付けるようになります。

- [load] `--output_errors yes` オプションをサポートしました。"yes"を指定すると、どのレコードのloadに失敗したのかエラーを取得できるようになります。この機能を使う場合には、コマンドバージョン3を指定します。

- [load] キーのキャストに失敗したときのエラーメッセージをわかりやすくしました。以前は単に "cast failed" と表示していましたが、テーブルのキーの型とキャスト対象となるキーの型もメッセージに含まれるようになりました。

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

### 修正

- 存在しないソートキーを `drilldowns[LABEL]` や `slices[LABEL]` に指定するとJSONパースエラーとなる不具合を修正しました。 [GitHub#627] [村上さんがパッチ提供]

- 存在しないグループのサブレコードにアクセスしようとするとクラッシュする不具合を修正しました。例えば、 `drilldowns[LABEL].sort_keys _sum` を `calc_types` の指定なしに使っていた場合に問題が発生していました。 [GitHub#625] [村上さんがパッチ提供]

- tokenizerでエラーが発生するとクラッシュする不具合を修正しました。tokenizer と token filterを登録していて、tokenizer にエラーがあると発生していました。

- [window_record_number] ウィンドウ関数の引数が正しく渡されていない不具合を修正しました。 [GitHub#634] [村上さんがパッチ提供]

### 感謝

- 村上さん

- aomi-nさん

## 古いリリース

- News - 6.x
  - 6.1.5リリース - 2017-01-23
  - 6.1.4リリース - 2017-01-18
  - 6.1.3リリース - 2017-01-06
  - 6.1.2リリース - 2016-12-31
  - 6.1.1リリース - 2016-11-29
  - 6.1.0リリース - 2016-10-29
  - 6.0.9リリース - 2016-09-29
  - 6.0.8リリース - 2016-08-29
  - 6.0.7リリース - 2016-07-29
  - 6.0.5リリース - 2016-06-29
  - 6.0.4リリース - 2016-06-06
  - 6.0.3リリース - 2016-05-29
  - 6.0.2リリース - 2016-04-29
  - 6.0.1リリース - 2016-03-29
  - 6.0.0リリース - 2016-02-29
- News - 5.x
  - 5.1.2リリース - 2016-01-29
  - 5.1.1リリース - 2015-12-29
  - 5.1.0リリース - 2015-11-29
  - 5.0.9リリース - 2015-10-29
  - 5.0.8リリース - 2015-09-29
  - 5.0.7リリース - 2015-08-31
  - 5.0.6リリース - 2015-07-29
  - 5.0.5リリース - 2015-06-29
  - 5.0.4リリース - 2015-05-29
  - 5.0.3リリース - 2015-04-29
  - 5.0.2リリース - 2015-03-31
  - 5.0.1リリース - 2015-03-29
  - 5.0.0リリース - 2015-02-09
- News - 4.x
  - 4.1.1リリース - 2015-01-29
  - 4.1.0リリース - 2015-01-09
  - 4.0.9リリース - 2014-12-29
  - 4.0.8リリース - 2014-11-29
  - 4.0.7リリース - 2014-10-29
  - 4.0.6リリース - 2014-09-29
  - 4.0.5リリース - 2014-08-29
  - 4.0.4リリース - 2014-07-29
  - 4.0.3リリース - 2014-06-29
  - 4.0.2リリース - 2014-05-29
  - 4.0.1リリース - 2014-03-29
  - 4.0.0リリース - 2014-02-09
- News - 3.x
  - 3.1.2リリース - 2014-01-29
  - 3.1.1リリース - 2013-12-29
  - 3.1.0リリース - 2013-11-29
  - 3.0.9リリース - 2013-10-29
  - 3.0.8リリース - 2013-09-29
  - 3.0.7リリース - 2013-08-29
  - 3.0.6リリース - 2013-07-29
  - 3.0.5リリース - 2013-06-29
  - 3.0.4リリース - 2013-05-29
  - 3.0.3リリース - 2013-04-29
  - 3.0.2リリース - 2013-03-29
  - 3.0.1リリース - 2013-02-28
  - 3.0.0リリース - 2013-02-09
- News - 2.x
  - 2.1.2リリース - 2013-01-29
  - 2.1.1リリース - 2012-12-29
  - 2.1.0リリース - 2012-12-29
  - 2.0.9リリース - 2012-11-29
  - 2.0.8リリース - 2012-10-29
  - 2.0.7リリース - 2012-09-29
  - 2.0.6リリース - 2012-08-29
  - 2.0.5リリース - 2012-07-29
  - 2.0.4リリース - 2012-06-29
  - 2.0.3リリース - 2012-05-29
  - 2.0.2リリース - 2012-04-29
  - 2.0.1リリース - 2012-03-29
  - 2.0.0リリース - 2012-02-29
- News - 1.3.x
  - 1.3.0リリース - 2012-01-29
- News - 1.2.x
  - 1.2.9リリース - 2011-12-29
  - 1.2.8リリース - 2011-11-29
  - 1.2.7リリース - 2011-10-29
  - 1.2.6リリース - 2011-09-29
  - 1.2.5リリース - 2011-08-29
  - 1.2.4リリース - 2011-07-29
  - 1.2.3リリース - 2011-06-29
  - 1.2.2リリース - 2011-05-29
  - 1.2.1リリース - 2011-04-29
  - 1.2.0リリース - 2011-03-29
- バージョン1.1.xのお知らせ
  - 1.1.0リリース - 2011-02-09
- バージョン1.0.xのお知らせ
  - 1.0.8リリース - 2011-02-02
  - 1.0.7リリース - 2011-01-29
  - 1.0.6リリース - 2010-12-31
  - 1.0.5リリース - 2010-12-29
  - 1.0.4リリース - 2010-11-29
  - 1.0.3リリース - 2010-10-29
  - 1.0.2リリース - 2010-09-09
  - 1.0.1リリース - 2010-09-06
  - 1.0.0リリース - 2010-08-29
- バージョン0.xのお知らせ
  - 0.7.7リリース - 2010-08-25
  - 0.7.6リリース - 2010-08-19
- News in Senna period
  - Senna -> groonga - 2009-01-14
  - 2006-04-05
  - 2006-03-03
  - 2006-01-16
  - 2006-01-12
  - 2005-12-22
  - 2005-10-27
  - 2005-09-17
  - 2005-09-08
  - 2005-08-16
  - 2005-07-05
  - 2005-06-23
  - 2005-04-12