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

お知らせ

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_ENABLEDyes を設定すれば有効になる。

修正

  • 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_optarg0 で初期化しているかチェックしてください。:

    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 MARKU+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_columnsLexicon.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さん

古いリリース