mroonga 20141129

Post on 07-Jul-2015

162 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introduction of developing Mroonga features in 2014.

TRANSCRIPT

今年の

Mroonga

2014/11/29

斯波健徳

Mroonga 4.08が

リリースされました。

MariaDB 10.0.15で

バンドルされました!

https://downloads.mariadb.org/

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

ダウンロードできます。

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

Mroongaとは?

Mroongaは、MySQL/MariaDBの

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

GroongaをMySQLから利用し、MySQLに

・全文検索機能

・位置情報検索機能

を提供します。

最適化関係

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

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

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

(by @naoa_yさん)

・ 夏時間のサポート

パラメータ追加関係

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

mroonga_lock_timeout(ミリ秒)で

変更できるようになった

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

mroonga_vector_column_delimiterで

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

カラム圧縮 (実験的)

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"'

カラム圧縮 (実験的)

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

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

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

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

SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_zlib';

SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_lz4';

トークンフィルタ

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

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

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

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

・TokenFilterStopWord

・TokenFilterStem

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

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

TokenFilterStopWordを紹介します。

トークンフィルタ

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

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

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

1度だけ実行します。

SELECT mroonga_command('register token_filters/stop_word');

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

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

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

true を指定してください。

トークンフィルタ

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 します。

トークンフィルタ

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

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

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

結果になります。

SELECT *

FROM memos

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

MySQL/MariaDB

どちらでも

利用できます。

今後の予定

今後の予定

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

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

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

ほぼ毎月リリース

されています。

リリース関係者の皆様

ありがとうございます!

なので

バグフィックスも

ほぼ毎月リリース

されます。

それでは、

Mroongaで

ガンガン

検索してください!

http://mroonga.org

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

Any Questions?

You can see me later!

Come to visit me!!

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

top related