mroonga 20141129

20

Click here to load reader

Upload: kentoku

Post on 07-Jul-2015

162 views

Category:

Technology


4 download

DESCRIPTION

Introduction of developing Mroonga features in 2014.

TRANSCRIPT

Page 1: Mroonga 20141129

今年の

Mroonga

2014/11/29

斯波健徳

Page 2: Mroonga 20141129

Mroonga 4.08が

リリースされました。

Page 3: Mroonga 20141129

MariaDB 10.0.15で

バンドルされました!

https://downloads.mariadb.org/

から、MroongaがバンドルされたMariaDBを

ダウンロードできます。

Page 4: Mroonga 20141129

今年の機能追加と改善 (2013/12 ~ 2014/11)

Page 5: Mroonga 20141129

Mroongaとは?

Mroongaは、MySQL/MariaDBの

プラグイン(ストレージエンジン)で、

GroongaをMySQLから利用し、MySQLに

・全文検索機能

・位置情報検索機能

を提供します。

Page 6: Mroonga 20141129

最適化関係

・ ORDER BY + LIMITの最適化に、INT、DATETIME、TIME型を追加

・ ストレージモードでディスクの領域の再利用率を高め、データベースが肥大化を抑制

・ alter table文でのカラムの追加、削除の高速化

(by @naoa_yさん)

・ 夏時間のサポート

Page 7: Mroonga 20141129

パラメータ追加関係

・ Groonga内部のロックタイムアウトを

mroonga_lock_timeout(ミリ秒)で

変更できるようになった

・ ベクターカラムのデリミターを

mroonga_vector_column_delimiterで

変更できるようになった。

Page 8: Mroonga 20141129

カラム圧縮 (実験的)

zlibまたはLZ4でのカラム圧縮をサポートしました。

圧縮率優先ならzlib、圧縮・展開速度優先ならLZ4とする

のが良いようです。

カラムの定義のCOMMENT部分に、

zlibなら'flags "COLUMN_SCALAR|COMPRESS_ZLIB"'

LZ4なら'flags "COLUMN_SCALAR|COMPRESS_LZ4"'

を指定することで利用できます。

例: content TEXT COMMENT 'flags "COLUMN_SCALAR|COMPRESS_LZ4"'

Page 9: Mroonga 20141129

カラム圧縮 (実験的)

なお、カラム圧縮機能を使うためには使っている

GroongaがzlibまたはLZ4をサポートしている必要が

あります。それらは以下のコマンドを実行することで、

システム変数として確認できます。

SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_zlib';

SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_lz4';

Page 10: Mroonga 20141129

トークンフィルタ

トークナイズ後の各トークンに対して処理を実行できる

トークンフィルタ機能を追加されました。この機能を利用して

例えば、トークンを無視したり変更したりできます。

以下のトークンフィルタが現在利用可能です。

・TokenFilterStopWord

・TokenFilterStem

TokenFilterStemは、ステミングを有効にすることが

できるのですが、こちらはまだ実験的なので、ここでは、

TokenFilterStopWordを紹介します。

Page 11: Mroonga 20141129

トークンフィルタ

TokenFilterStopWordは、文書を検索する時に

トークナイズされたトークンからストップワードを除去します。

TokenFilterStopWordを有効にするには、以下のコマンドを

1度だけ実行します。

SELECT mroonga_command('register token_filters/stop_word');

ストップワード機能を使うには、語彙表を用意してストップ

ワードを主キーとして登録します。また、BOOL 型で

is_stop_word カラムを作成し、データを登録するときには

true を指定してください。

Page 12: Mroonga 20141129

トークンフィルタ

CREATE TABLE terms (

term VARCHAR(64) NOT NULL PRIMARY KEY,

is_stop_word BOOL NOT NULL

) Engine=Mroonga COMMENT='default_tokenizer "TokenBigram", token_filters

"TokenFilterStopWord"' DEFAULT CHARSET=utf8mb4;

CREATE TABLE memos (

content TEXT

FULLTEXT INDEX (content) COMMENT 'table "terms"'

) Engine=Mroonga DEFAULT CHARSET=utf8mb4;

INSERT INTO terms VALUES ("and", true);

上記のように語彙表( terms テーブル)に is_stop_word カラムを

用意して、ストップワードの対象となる語句をPRIMARY KEYとします。

ストップワードの is_stop_word の値は true として insert します。

Page 13: Mroonga 20141129

トークンフィルタ

この場合 and がストップワードとして登録されているので、

次のように Hello and で検索しても and をストップワードと

して扱い、無視します。つまり、 Hello で検索したのと同じ

結果になります。

SELECT *

FROM memos

WHERE MATCH (content) AGAINST ("+Hello +and" IN BOOLEAN MODE);

Page 14: Mroonga 20141129

MySQL/MariaDB

どちらでも

利用できます。

Page 15: Mroonga 20141129

今後の予定

Page 16: Mroonga 20141129

今後の予定

・ MariaDBへのバンドル版のWindows対応など

・ 現場で役に立ちそうな機能があれば、実装

・ 使って頂いている皆さんの要件に応じて対応

Page 17: Mroonga 20141129

ほぼ毎月リリース

されています。

リリース関係者の皆様

ありがとうございます!

Page 18: Mroonga 20141129

なので

バグフィックスも

ほぼ毎月リリース

されます。

Page 19: Mroonga 20141129

それでは、

Mroongaで

ガンガン

検索してください!

Page 20: Mroonga 20141129

http://mroonga.org

Kentoku SHIBA (kentokushiba [at] gmail [dot] com)

Any Questions?

You can see me later!

Come to visit me!!

ご清聴ありがとうございました!