BloGroonga

2019-09-27

Groonga 9.0.8リリース

Groonga 9.0.8をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • 作成中のインデックスを無視するように改良しました。

    • インデックス構築中であっても、正しい検索結果を取得できます。
    • ただし、この場合、Groongaは検索にインデックスを使用しないため、検索は遅くなります。
    • 今まで、検索結果を取得できなかったケースでも、この改良によって、検索結果を取得できる場合があります。
  • sub_filter 対象のカラムのインデックスが作成中か、または、インデックスが無い時に sub_filter がシーケンシャルサーチを実行する機能を追加しました。

    • 有効なインデックスが無い場合、今までは、 sub_filter はエラーになっていました。
    • この改良によって、有効なインデックスが無い場合でも、sub_filter が結果を返すようになります。
    • ただし、上記の状態の場合、 sub_filter はシーケンシャルサーチで実行されるので、遅いです。
  • logical_range_filter レコードが十分にあるとき、かつフィルター条件にマッチしないレコードが推定値を超えた時に、同じオブジェクトを2回閉じるという例外が発生する問題を修正しました。

さいごに

9.0.7からの詳細な変更点は9.0.8リリース 2019-09-27を確認してください。

それでは、Groongaでガンガン検索してください!

2019-08-29

Groonga 9.0.7リリース

Groonga 9.0.7をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

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

    • CVE-2019-9511、CVE-2019-9513、CVE-2019-9516のセキュリティの修正が含まれています。
  • 動的カラムのステージに initial を指定し、インデックスを使用した検索をすると空の結果を返す問題を修正しました。

  • configure時にlibeditがインストールされているにもかかわらず、検知しない問題を修正しました。

  • select --slices--sort_keys オプション使用時に --offset--limit オプションが動作しない問題を修正しました。

  • select select コマンドの結果が巨大な時、検索結果が空になる問題を修正しました。

  • 前方一致検索や後方一致検索時に適切なインデックスを使わない問題を修正しました。

さいごに

9.0.6からの詳細な変更点は9.0.7リリース 2019-08-29を確認してください。

それでは、Groongaでガンガン検索してください!

2019-08-05

Groonga 9.0.6リリース

Groonga 9.0.6をリリースしました!

それぞれの環境毎のインストール方法: インストール

リリースに関する重要なお知らせ

本リリースには、検索結果に影響のある重要なバグの修正が含まれています。

変更内容

主な変更点は以下の通りです。

  • 検索エスカレーションが起こった際に、検索がエラーになるバグを修正しま した。

  • ネストされた等価演算を使った際に、マッチすべきではないレコードがマッチするバグを修正しました。

  • Debian 10 (buster) をサポートしました。

検索エスカレーションが起こった際に、検索がエラーになるバグを修正しました

以下の条件を満たした際に、検索がエラーとなり、マッチしたレコードを取得 できなくなるバグを修正しました。

  • 語彙表がTABLE_HASH_KEY
  • @演算子を使用した検索
  • 検索エスカレーションが発生

ネストされた等価演算を使った際に、マッチすべきではないレコードがマッチするバグを修正しました

selectコマンドのslicesパラメータを使った検索で、slicesで指定した条件とマッチしないレコードが出力されることがある問題を修正しました。

Debian 10 (buster) をサポートしました

Debian 10 (buster - 2019-07-06リリース)をサポートしました。 Debian 9 (stretch) と同じ方法でインストールできます。

さいごに

9.0.5からの詳細な変更点は9.0.6リリース 2019-08-05を確認してください。

それでは、Groongaでガンガン検索してください!

2019-07-30

Groonga 9.0.5リリース

Groonga 9.0.5をリリースしました!

それぞれの環境毎のインストール方法: インストール

リリースに関する重要なお知らせ

本リリースには、以下の問題が含まれていることがわかりました。近日中に以下の問題を修正した 9.0.6 をリリース予定です。 9.0.6 がリリースされるまでは、 9.0.5 は使わないことをおすすめいたします。

発見された問題は以下の通りです。

  • 語彙表がTABLE_HASH_KEYで、@演算子を使用した検索のときに、検索エスカレーションが発生すると、検索結果がエラーとなり、ヒットしたレコードが取得できない問題。

  • selectコマンドのslicesパラメータを使った検索で、slicesで指定した条件とマッチしないレコードが出力されることがある問題。

変更内容

主な変更点は以下の通りです。

  • logical_range_filter 検索対象のシャードが十分に大きい時にのみ最適化を適用するように改良しました。

  • ノーマライザー NormalizerNFKC100 に新しいオプション unify_to_katakana を追加しました。

  • select slices パラメーターでdrilldownsをサポートしました。
  • select slices パラメーターでcolumnsをサポートしました。
  • select initial ステージ内でslicesパラメーターが _score を参照できるよう改良しました。

  • highlight_htmlsnippet_html slicesパラメータ指定時に、slices実行前の式からもキーワードを抽出するように改良しました。

  • highlight_htmlsnippet_html slicesパラメータ指定時に、slices実行前の式からもスコアーを収集するように改良しました。

  • ポスティングリストにポスティングを追加する際に自動的にスコアーを1増やすのをやめました。

  • XXX.YYY.ZZZ == AAA のようなネストされた等価演算のインデックス検索をサポートしました。

  • ハッシュテーブル使用時にハッシュの再構築の間隔を少なくしました。

  • クエリーログにプレフィックスを追加できるようになりました。

  • Apache Arrow 1.0.0 をサポートしました。

  • Amazon Linux 2 をサポートしました。

  • "[1, 2, 3]" のようなJSONのベクター値がインデックスされないバグを修正しました。

  • table_create のテストのパラメーター名が誤っていたバグを修正しました。

  • command_version=3 でdrilldownコマンドが実行された際に、ドリルダウンのラベルが空になるバグを修正しました。

  • MinGWでWindows版のパッケージのビルドが失敗するバグを修正しました。

  • MinGWのWindows版パッケージにCOPYINGがインストールされないバグを修正しました。

  • ハイライト対象として、クエリーにテキスト以外を指定した際に、キーワードがハイライトされないバグを修正しました。

  • object_inspect のMessagePack形式の出力が壊れるバグを修正しました。

  • index_column_diff のMessagePack形式の出力が壊れるバグを修正しました。

  • suggest のMessagePack形式の出力が壊れるバグを修正しました。

  • パトリシアトライのテーブルの検索時などにreallocのサイズが十分に確保されないバグを修正しました。

  • groonga-release version 1.5.0より前から1.5.0-1へアップデートした際に groonga.repo が削除されるバグを修正しました。

logical_range_filter 検索対象のシャードが十分に大きい時にのみ最適化を適用するように改良しました

この機能は、ソートキーが同じ時にオフセット間で検索結果が重複するのを減らします。 十分に大きいのしきい値はデフォルトで10000レコードです。

ノーマライザー NormalizerNFKC100 に新しいオプション unify_to_katakana を追加しました

このオプションは、平仮名を片仮名にノーマライズします。 例えば、 ゔぁゔぃゔゔぇゔぉ を ヴァヴィヴヴェヴォ にノーマライズします。

unify_to_katakanaunify_katakana_v_sounds を使って以下の語を同一視できます。

  • ぁ ぃ ぇ ぉ
  • ばびぶべぼ
  • ヴァヴィヴヴェヴォ
  • バビブベボ

  • 最初に unify_to_katakana を適用します。

    • ぁ ぃ ぇ ぉ -> ヴァヴィヴヴェヴォ
    • ばびぶべぼ -> バビブベボ
    • ヴァヴィヴヴェヴォ -> ヴァヴィヴヴェヴォ
    • バビブベボ -> バビブベボ
  • 次に unify_katakana_v_sounds を適用します。

    • ヴァヴィヴヴェヴォ -> バビブベボ
    • バビブベボ -> バビブベボ

さいごに

9.0.4からの詳細な変更点は9.0.5リリース 2019-07-30を確認してください。

それでは、Groongaでガンガン検索してください!

2019-06-29

Groonga 9.0.4リリース

Groonga 9.0.4をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • 配列リテラルの複数要素をサポートしました。

  • ベクターの等価演算をサポートしました。

  • logical_range_filter 出力するクエリーログを追加しました。

  • grndb 新しいオプション --since を追加しました。

  • query default_operator を追加しました。

  • [optimizer] 複数のfilter条件と xxx.yyy=="keyword" のような条件を指定した際にエラーが発生するバグを修正しました。

  • GroongaのWindows用のパッケージ(VC++版)に不足していたライセンスファイルを追加しました。

  • GroongaのWindows用のパッケージ(VC++版)UCRTランタイムを追加しました。

  • window_function メモリリークを修正しました。

    • これは、複数のウインドウに対してソートキーを適用した際に発生します。

配列リテラルの複数要素をサポートしました。

以下のように filter 条件の中で複数要素を持った配列リテラルを使うことができます。

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

ベクターの等価演算をサポートしました。

以下のようにベクターに対して等価演算を使うことができます。

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

logical_range_filter 出力するクエリーログを追加しました。

logical_range_filter コマンドが、以下のタイミングでログを出力するようになります。

  • logical_range_filter によるフィルター後
  • logical_range_filter によるソート後
  • 動的カラム適用後
  • 結果出力後

この機能によって、このコマンドがどこまで完了したかを見ることができます。

grndb Added support new option --since

検査の範囲を指定できます。

更新時刻は ISO 8601形式か -3days や -2.5weeksといった -NUNIT 形式で指定します。

以下は –since オプションをISO 8601形式で指定する例です。

% grmdb check --since=2019-06-24T18:16:22 /var/lib/groonga/db/db

上記の例では 2019-06-24T18:16:22 以降に更新されたオブジェクトをチェックします。

以下は –since オプションを -NUNIT 形式で指定する例です。

% grmdb check --since=-7d /var/lib/groonga/db/db

上記の例では、直近7日で更新されたものがチェックされます。

grndb#since も参考にしてください。

query default_operatorを追加しました。

"keyword1 keyword2"時の演算子をカスタマイズできます。 デフォルトでは、"keyword1 keyword2"はAND演算です。

以下のように、"keyword1 keyword2"の演算子をAND以外に変更できます。

table_create Products TABLE_NO_KEY

column_create Products name COLUMN_SCALAR ShortText

load --table Products
[
["name"],
["Groonga"],
["Mroonga"],
["Rroonga"],
["PGroonga"],
["Ruby"],
["PostgreSQL"]
]

select \
  --table Products \
  --filter 'query("name", "Groonga Mroonga", {"default_operator": "OR"})'
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        3
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "name",
          "ShortText"
        ]
      ],
      [
        1,
        "Groonga"
      ],
      [
        4,
        "PGroonga"
      ],
      [
        2,
        "Mroonga"
      ]
    ]
  ]
]

さいごに

9.0.3からの詳細な変更点は9.0.4リリース 2019-06-29を確認してください。

それでは、Groongaでガンガン検索してください!