mroonga 20141129
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!!
ご清聴ありがとうございました!