Groonga 14.0.4リリース
Groonga 14.0.4をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
修正
-
[query_parallel_or]
query_parallel_or()
を使用すると、match_escalation_threshold
またはforce_match_escalation
オプションが無視される問題を修正しました。修正前は、検索エスカレーションを無効にしても、
query_parallel_or()
使用時はエスカレーションされていました。この問題は、query_parallel_or()
でのみ発生します。query()
では発生しません。一般的には、ヒット数が0件になってしまうのは嬉しくありません。何かしらの検索結果を得たいことが多いです。したがって、通常、検索エスカレーションは無効にしません。そのため、この問題は多くのユーザーには影響がありませんが、以下のようにストップワードを利用しているユーザーには影響があります。
plugin_register token_filters/stop_word table_create Memos TABLE_NO_KEY column_create Memos content COLUMN_SCALAR ShortText table_create Terms TABLE_PAT_KEY ShortText \ --default_tokenizer TokenBigram \ --normalizer NormalizerAuto \ --token_filters TokenFilterStopWord column_create Terms memos_content COLUMN_INDEX|WITH_POSITION Memos content column_create Terms is_stop_word COLUMN_SCALAR Bool load --table Terms [ {"_key": "and", "is_stop_word": true} ] load --table Memos [ {"content": "Hello"}, {"content": "Hello and Good-bye"}, {"content": "Good-bye"} ] select Memos \ --filter 'query_parallel_or(["content", "content", "content", "content"], \ "and", \ {"options": {"TokenFilterStopWord.enable": true}})' \ --match_escalation_threshold -1 \ --sort_keys -_score
ストップワードとして登録したキーワードではマッチしてほしくありません。そのため、上記の例では、
match_escalation_threshold
に-1
を設定しています。エスカレーションが無効でかつ、ストップワードに検索キーワード(and
)が登録されているため、上記の例では、Groongaは何もレコードを返さないことが期待値です。しかし、この問題が発生すると、Groongaはマッチしたレコードを返却してしまいます。query_parallel_or()
を使うと、match_escalation_threshold
が効かないためです。 -
参照ベクターカラムに対する全文検索が動作しない問題を修正しました。
この問題は、Groonga v14.0.0以降で発生します。また、この問題は、参照ベクターカラムに対して全文検索を実行している場合に影響があります。
以下の例では、Groongaが
[1, "Linux MySQL"]
と[2, "MySQL Groonga"]
を返すことが期待ですが、修正前は、以下のように常に0件ヒットになっていました。参照ベクターカラムに対して全文検索しているためです。table_create bugs TABLE_PAT_KEY UInt32 table_create tags TABLE_PAT_KEY ShortText --default_tokenizer TokenDelimit column_create tags name COLUMN_SCALAR ShortText column_create bugs tags COLUMN_VECTOR tags load --table bugs [ ["_key", "tags"], [1, "Linux MySQL"], [2, "MySQL Groonga"], [3, "Mroonga"] ] column_create tags bugs_tags_index COLUMN_INDEX bugs tags select --table bugs --filter 'tags @ "MySQL"' [ [ 0, 0.0, 0.0 ], [ [ [ 0 ], [ [ "_id", "UInt32" ], [ "_key", "UInt32" ], [ "tags", "tags" ] ] ] ] ]