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

- English

### ナビゲーション

- 索引
- Groonga v5.0.4ドキュメント »

# お知らせ

## 5.0.4リリース - 2015-05-29

### 改良

- [mruby] `inspect` を意味のあるわかりやすいエラーメッセージを表示するために使うようにしました。

- [mruby] バルクオブジェクトを調査するための `Groonga::Bulk#inspect` をサポートしました。

- [mruby] バルクオブジェクトからレコードの値を取得するための `Bulk#value` をサポートしました。

- [mruby] logical_range_filter で参照型のカラムの値が特定のレコードのIDにマッチする場合 (`reference_column == record_id`) を効率良く検索するために必要なマッチするレコード数を見積もれるようになりました。

- [sub_filter] インデックスカラムを `scope` 引数に指定できるようになりました。

- [スクリプト構文] 数値に関する記述をよりわかりやすくしました。 [GitHub groonga/groonga.org#16] [佐藤さんが提案]

- [select] Select対象でない他のテーブルのレコードをフィルタに指定できるようになりました。 `--filter 'OHTER_TABLE[KEY].COLUMN'` といったようにフィルタで指定できます。

- [select] テーブルのキーでオペレータを指定できるようになりました。 `--filter 'OHTER_TABLE["SOME STRING" + "ANOTHER STRING"]` というようにキーを連結した文字列として指定することができます。

- [example] Ruby 2.0以降のAPIを辞書の変換スクリプトで使うようにしました。

- テーブルのキーの型が正しくないときにエラーメッセージを表示するようにしました。

- [doc] メーリングリストの案内ページへのリンクをsourceforge.jpからosdn.meやosdn.jpに修正しました。

- [tokenize] `force_prefix` を追加しました。[村上さんがパッチ提供]

- 2文字以上のトークンに対しても前方一致検索を強制できるようにしました。TokenBigramで1文字トークンであっても強制前方一致検索することでうまく検索できる仕組みをTokenTrigram等でも適用できるようになりました。 [GitHub#341] [村上さんがパッチ提供]

### 修正

- 空のキーが `drilldown[label].keys`.に指定されるとクラッシュする不具合を修正しました。

- `grn_parse_query_flags` の返り値を適切にチェックしていないのを修正しました。 [GitHub#336] [Hiroaki Nakamuraさんが報告]

- BSD系でビルドエラーになる不具合を修正しました。sedに "-i" オプションがないためエラーになっていました。

- Solarisでビルドエラーになる不具合を修正しました。`memset()` にて `sizeof(msghdr)` だけ初期化するようにしました。これは Solarisでは `msg_control` や `msg_controllen` `msg_flags`、が存在しないためです。

- [トークナイザー] ドキュメントの誤字を修正しました。[GitHub#338] [佐藤さんが報告]

- [出力] ドキュメントのマークアップを修正しました。 [GitHub groonga/groonga.org#17] [佐藤さんが報告]

- `grn_ii_cursor_set_min()` を呼ぶごとに getenv()しないようにしました。これによりWindows上でのパフォーマンスのリグレッションが解決します。

- OpenBSDでビルドエラーになる不具合を修正しました。 [groonga-dev,03255] [fbnteqrさんが報告]

- [groonga-httpd] 同じメッセージが重複してログに記録される不具合を修正しました。

- 二重にメモリを開放することでクラッシュする不具合を修正しました。

- メモリリークを修正しました。 `--match_columns` と `--query` にインデックスを張っていないテキストカラムを指定し、そのテキストカラムの内容がバルクオブジェクトに収まりきらないと発生します。バルクオブジェクトに収まりきらないのは32byteを越える場合です。そのため、テキストがそれよりも短いものばかりならばこの不具合の影響を受けません。

- [トークナイザー] [TokenRegexp] クエリに空白として扱われる文字が含まれている場合に正しく検索できない不具合を修正しました。典型的な例は改行 ("\n")が含まれている場合です。

### 感謝

- Hiroaki Nakamuraさん

- 佐藤さん

- 村上さん

- fbnteqrさん

## 5.0.3リリース - 2015-04-29

### 改良

- [トークナイザー][正規表現] 最後の一文字のトークンをスキップするようにしました。

- [mruby] 正規表現パターンのサイズ推定をサポートしました。

- [mruby] アクセサーのサイズ推定をサポートしました。

- [logical_range_filter] Groonga 5.0.2で導入された `GRN_LOGICAL_RANGE_FILTER_ENABLED` 環境変数を削除しました。範囲インデックス検索を無効にするには `GRN_LOGICAL_RANGE_FILTER_THRESHOLD=0` を使ってください。

- [logical_range_filter] 負の上限値とオフセットをサポートしました。

- [Windows] パッケージで Groonga Admin を使うようにしました。

- [logical_range_filter] 閾値の意味を変更しました。

  - threshold <= 0.0: 常に範囲インデックスを使う

  - threshold >= 1.0: 範囲インデックスを全く使わない

- [dump] プラグインに対応しました。

- [dump] 以下のオプションを追加しました。

  - `--dump_plugins [yes(default)/no]`
  - `--dump_schema [yes(default)/no]`
  - `--dump_records [yes(default)/no]`
  - `--dump_indexes [yes(default)/no]`

- [API] `grn_plugin_get_ruby_suffix()` を追加しました。

- [dump] インデックスカラムは参照カラムを参照するので、インデックスカラムを参照カラムの後に置くように修正しました。

- [dump] 語彙表のレコードをダンプしないようにしました。

- [dump] 再度 `TABLE_NO_KEY` のときに `_id` を表示するようにしました。

- [dump] オフラインインデックス構築するようにしました。

- ハッシュのキーサイズの上限値を4KiB（4096バイト）から64KiB - 1（65535バイト）に増やしました。

- キャッシュのキーサイズの上限値を4KiB（4096バイト）から64KiB - 1（65535バイト）に増やしました。

- ネストしたインデックス検索のパフォーマンスを改善しました。

- 存在しない参照カラムにインデックスを使うようにしました。

- [実験的] vector_size 関数を含むfunctions/vectorプラグインを追加しました。

- [Windows] Visual Studioのバージョンを更新しました。 [GitHub groonga/meetup#4] [Hiroyuki Mizuharaさんが報告]

- [cache_limit] キャッシュの上限値が減ったときに古いキャッシュから無効にするようにしました。 [株式会社ぐるなびさんが提案]

- エラー時にerrnoなどの情報を表示するようにしました。

- [windows] 安全な関数を使うようにしました。

- ログローテーションの閾値を変更するためのAPIを追加しました。

  - `grn_default_logger_set_rotate_threshold_size()`
  - `grn_default_logger_get_rotate_threshold_size()`
  - `grn_default_query_logger_set_rotate_threshold_size()`
  - `grn_default_query_logger_get_rotate_threshold_size()`

- [実験的] ログローテーションをサポートしました。この機能はデフォルトでは無効です。以下のオプションで有効にできます。

  - `--log-rotate-threshold-size`
  - `--query-log-rotate-threshold-size`

- [GQTP] GQTPサーバーについてのドキュメントを追加しました。

- [groonga executable file] groonga実行ファイルのドキュメントを一部追加しました。

- Ubuntu 15.04 (Vivid Vervet)をサポートしました。

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

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

### 修正

- [windows] Microsoft Visual C++でビルドしたGroongaで、大きいデータ（少なくとも1GB以上）のオフラインインデックス構築（静的なインデックス構築方法） に失敗していた不具合を修正しました。 [Hideki ARAIさんが報告]

- [mruby] 正規表現の中の `\\` をインデックス検索可能にしました。

- `GRN_II_CURSOR_SET_MIN_ENABLE=yes` のときにいくつかマッチ済みのレコードを返していなかった不具合を修正しました。

- [sharding] 部分範囲がすべての範囲として扱われる不具合を修正しました。

- [logical_range_filter] `:order => "descending"` が動作しない不具合を修正しました。

- [logical_count] 範囲インデックスの集計を再度サポートしました。

- 誤動作の原因となる `grn_pat_del()` の不具合を修正し、無効なパトリシアトライノードのテストを追加しました。 [groonga-dev,03177] [yuya sakoさんが報告]

### 感謝

- Hideki ARAIさん

- Hiroyuki Mizuharaさん

- 株式会社ぐるなびさん

- yuya sakoさん

## 5.0.2リリース - 2015-03-31

5.0.1のバグフィックスリリースです。

### 改良

- MessagePack 1.0.1をサポート。 [畑ケさんが報告]

- [logical_range_filter] 範囲検索をデフォルトで無効にした。 環境変数 `GRN_LOGICAL_RANGE_FILTER_ENABLED` に `yes` を設定すれば有効になる。

### 修正

- JSONPが動作していなかった不具合を修正。これはGroonga 4.1.1で入った不具合。

- Groonga 5.0.1がx86環境でクラッシュする不具合を修正。[groonga-dev,03131] [篠田さんが報告]

- libeditが正しく初期化されない不具合を修正。CentOS 7などの環境で問題が解消される。

### 感謝

- 篠田さん

- 畑ケさん

## 5.0.1リリース - 2015-03-29

### 改良

- [logical_range_filter] filterとsortをサポートしました。

- マルチカラムインデックスを使った指定範囲の検索をサポートしました。

- Groongaをライブラリとして使う人向けにAPIの 概要 を追加しました。

- [非互換] 内部で使っている `_score` の型を 32bit整数値から浮動小数点数に変更しました。この変更はGroongaのDB APIを使っているユーザーにとって非互換な変更です。クエリAPIを使っているユーザーには影響ありません。つまり、select を使っているだけなら影響ないということです。新旧のバージョンのGroongaで動作するようにするには次のコードを使います:

      grn_obj *score;
      double score_value;

      if (score->header.domain == GRN_DB_FLOAT) {
        score_value = GRN_FLOAT_VALUE(score);
      } else {
        score_value = (double)GRN_INT32_VALUE_FLOAT_VALUE(score);
      }

- [select] ドリルダウンの引数の誤りをより厳密にチェックするようにしました。

- `grn_ctx_get_all_tables()` を追加しました。 [Masatoshi Teruyaさんが提案]

- スコア関数のカスタマイズをサポートしました。詳細は Scorer を参照してください。

- [非互換] スコア関数の導入により、DB API層でAPIとABIの互換性がなくなりました。`grn_search_optarg` を使っていたら、次のようなコードで `grn_search_optarg` を `0` で初期化しているかチェックしてください。:

      grn_search_optarg options;
      memset(&options, 0, sizeof(grn_search_optarg));

  上記のようにしていれば、あなたの書いたコードはAPIの互換性があり、ABIは互換性がない状態です。単にそのままリビルドしてください。コードの修正は不要です。

  もしあなたの書いたコードが上記のようにしていないなら、上記のコードを追加してください。

- DB APIに `grn_obj` の型をチェックするための述語関数を追加しました。

  - `grn_obj_is_table()`
  - `grn_obj_is_proc_proc()`
  - `grn_obj_is_function_proc()`
  - `grn_obj_is_selector_proc()`
  - `grn_obj_is_scorer_proc()`

- [実験的] ポスティングリストをスキップできるようにしました。頻出語とほとんど出現しない語が同時に検索されたときにスキップできます。これにより検索の速度を改善できます。この機能を有効にするには `GRN_II_CURSOR_SET_MIN_ENABLE` 環境変数を `1` にします。デフォルトでは無効です。

- [doc] in_values のドキュメントを追加しました。

- logical_count のドキュメントを追加しました。

- [mruby] `#inspect` メソッドを実装しました。デバッグに有用です。

- スコアラー scorer_tf_at_most のドキュメントを追加しました。出現頻度が高くても、指定したスコアの閾値を越えないようにします。

- [mruby] マッチする件数を推定してインデックスを使って検索するかシーケンシャルに検索するかを選択できるようにしました。

- インデックスを使ってサイズを推定するための関数を追加しました。

  - `grn_expr_estimate_size()`
  - `grn_ii_estimate_size_for_query()`
  - `grn_ii_estimate_size_for_lexicon_cursor()`

- NormalizerAuto が利用できるかのチェックを追加しました。[GitHub#283] [末永さんが報告]

- Visual Studio 2010のサポートをやめました。

- [実験的][mecab] チャンクに分割してトークナイズできるようにしました。この機能は MeCabの "too long sentense" エラーの回避策です。有効にするには `GRN_MECAB_CHUNKED_TOKENIZE_ENABLED` 環境変数を `yes` に設定します。この設定により、Groonga は長いテキスト (デフォルトでは 8192 バイトを越えるテキスト)を小さなチャンクと呼ばれるかたまりに分割してMeCabへと渡します。この処理により、上記のエラーが発生しないようになります。さらに、このチャンクの閾値は `GRN_MECAB_CHUNK_SIZE_THRESHOLD` 環境変数でカスタマイズできます。`,`, `.`, `!`, `?`, `U+3001 IDEOGRAPHIC COMMA`, `U+3002 IDEOGRAPHIC FULL STOP`, `U+FF01 FULLWIDTH EXCLAMATION MARK` と `U+FF1F FULLWIDTH QUESTION MARK` がチャンクの区切り文字として扱われます。

- groonga executable file のサーバーモードで `--pid-file` をサポートしました。

- [groonga-httpd] Groongaを緩やかに停止することができるようにしました。コネクションを即座に強制終了しないようになります。

- [実験的] 正規表現をサポートしました。正規表現の使いかたについては 正規表現 を参照してください。

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

- [http][load] "," をPOSTデータの区切り文字として使うようにしました。これにより、内部のバッファサイズが小さくて済むので、POSTデータに一切改行がない場合にロード時間を短縮できます。

- [doc] トークナイザー のドキュメントを追加しました。

- POSIX.2 との互換性を改善しました。bashの "source" コマンドのかわりに `.` を使うようにしました。[GitHub#317] [栗山さんがパッチ提供]

- [windows] デフォルトのIOバージョンを1に変更しました。これによりWindowsでディスク容量を削減できます。[groonga-dev,03118] [ongaeshiさんがテスト]

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

- TSV出力時のMIMEタイプを `text/plain` から `text/tab-separated-values` に変更しました。

- [TokenFilterStopWord] 静的なインデックス構築方法 をサポートしました。[GitHub#296] [村上さんがパッチ提供]

### 修正

- 非推奨の `--address` 引数をGroongaのデフォルト設定ファイル(groonga.conf)で使わないようにしました。かわりに `--bind-address` を使います。 [Groonga-talk] [Dewanggaさんが報告]

- [truncate] キーが TABLE_NO_KEY なテーブルでtruncateができない問題を修正しました。

- [mecab] 不必要な "empty token" や "ignore empty token" といったログが出力されないようにしました。

- 誤ったインデックスのセクションが使われてしまう不具合を修正しました。これにより誤った検索結果を返していました。次の条件をすべて満すと発生します。

  - 複数のインデックスが張られている

  - 最初に定義したインデックスか最後に定義したインデックスがマルチカラムインデックスを使っている

  - 最初に定義したインデックスと最後に定義したインデックスがマルチカラムインデックスだったとき、そのソースカラムの指定順が異なっている

- シェルのコマンドラインからGroongaのコマンドを groonga executable file に渡すと常に `0` を終了コードとして返す不具合を修正しました。 例えば、 `groonga DB_PATH 存在しないコマンド名` を実行しても終了コードとして `0` を常に返します。

- 2つ以上のプラグインを登録しているときにプラグインのパスが壊れてしまう不具合を修正しました。 [村上さんが報告]

- match_columns に `Lexicon.index.source_column_name` を指定しても動作しない不具合を修正しました。`source_column_name` として指定されたカラムが2つ以上のインデックスをもつ場合に発生します。 [村上さんが報告]

### 感謝

- Masatoshi Teruyaさん

- 末永さん

- Dewanggaさん

- 栗山さん

- ongaeshiさん

- 村上さん

## 5.0.0リリース - 2015-02-09

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

### 改良

- [doc] スクリプト構文 の セキュリティー に関して追加しました。

- [実験的] シャーディングするためのプラグインを追加しました。有効にするには register sharding を前もって実行します。レコードをselectするには logical_count を使います。

- [cmake] FreeBSD 10.1でのコンパイルエラーを修正しました。[MDEV-7293] [Bernard Spilさんが報告]

- プラグインのディレクトリをカスタマイズできるようにしました。 その場合 GRN_PLUGINS_DIR 環境変数を設定します。

### 修正

- システムに互換性のないバージョンのonigmoもしくはonigurumaのヘッダーがインストールされているとビルドに失敗する問題を修正しました。 [GitHub#276] [武者さんがパッチ提供]

- MSVCのtime関連でビルドに失敗する問題を修正しました。 [GitHub#237]

### 感謝

- 武者さん

- Bernard Spilさん

## 古いリリース

- 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
  - 改良
  - 修正
  - 感謝
- 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
  - 修正
  - 感謝
- 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
  - 改良
  - 修正
  - 感謝
- 1.3.0リリース - 2012-01-29
  - 改良
  - 感謝
- 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

### ナビゲーション

- 索引
- Groonga v5.0.4ドキュメント »