Mroongaブログ

2015-05-29

Mroonga 5.03リリース!

今日は肉の日ですね!

Mroonga 5.03 をリリースしました!

今回のリリースのハイライトは以下です。

  • 全文検索結果のソート処理で FT_SORTED フラグをサポート
  • MySQL互換のノーマライザーで全角スペースが空白扱いになっていなかった不具合を修正(非互換)

他にも、ストレージモードに関する不具合修正などがあるので、アップグレードをおすすめします。

全文検索結果のソート処理で FT_SORTED フラグをサポート

全文検索結果をストレージエンジンからMySQLに返すときに、ソート済みであることを示す FT_SORTED に対応していると、MySQL側ではストレージエンジン側でソートされているので、MySQL側で余計なソートをせずにそのまま返せるという仕組みがあります。

Mroongaはこれまでその仕組みに実は対応していませんでした。 今回のリリースでは、 FT_SORTED フラグがついている場合には、Mroonga側で適合順にソートしてからMySQLに結果を返すようにしました。 これにより、よりストレージエンジンとして正しい振舞いをするようになりました。

ただし、これにより MATCH AGAINST で特に ORDER BY 等を指定していないケースではもしかすると全文検索結果が従来と異なることがあるかも知れません。

もし、ソート順に関して期待と異なる結果が返ってくることがあれば、フィードバックをもらえると問題の解決につなげられるので嬉しいです。

MySQL互換のノーマライザーで全角スペースが空白扱いになっていなかった不具合を修正(非互換)

groonga-normalizer-mysqlに含まれているMySQL互換の空白を無視するノーマライザーで、全角スペースが空白扱いになっていない不具合を修正しました。(正規化した後の文字が半角スペースかどうかをチェックするべきところを、正規化前の文字が半角スペースかどうかをチェックしていたために起こった不具合です)

参考: 「TokenBigramIgnoreBlankSplitSymbolAlphaDigit」設定に関して (groonga-dev,03215) - Groonga - fulltext search engine. (グルンガ) - OSDN

この変更で互換性がなくなってしまうのですが、これまでの挙動がバグだったので変更しました。groonga-normalizer-mysqlを1.1.0にアップグレードすると、

ALTER TABLE テーブル名 DISABLE KEYS;
ALTER TABLE テーブル名 ENABLE KEYS;

としてインデックスを作り直す必要があるのでご注意ください。

MySQL互換のノーマラーザーの使い方については、以下のリンク先を参考にしてください。

おわりに

5.02からの詳細な変更点は 5.03リリース - 2015-05-29 を確認してください。

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