もっとgroongaを知ってもらおう!ということで週刊groongaをはじめました。毎週木曜にgroongaやmroonga、rroongaのトピックを投稿予定です。
いよいよ、gihyo.jpさんでgroongaの隔週更新連載が始まりました!!
第7回の記事も公開されたので、一読をおすすめします。
- 「第1回 全文検索エンジンgroongaを紹介します!」
- 「第2回 groongaをRuby On Railsでも使ってみた ~chikamap.comの事例から」
- 「第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介」
- 「第4回 rroongaを使ったソースコード検索エンジンMilkode」
- 「第5回 Rubyでサーバ要らずの高速全文検索! - rroongaの紹介」
- 「第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1)」
- 「第7回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(2)」
連載は始まりましたが、利用事例をどんどん紹介していきたいです。(利用事例のストックが尽きたら終了してしまいます。)
groongaやmroonga、rroongaを実際に使っていて利用事例記事を書いてもいいよ、という人をまだまだ募集しています。
詳細はgroonga普及のための協力のお願いを参照してください。
はじめに
MySQLで高速に全文検索するためのオープンソースのストレージエンジンとしてmroonga (むるんが)を公開しています。
最新のバージョンは2013年6月29日にリリースした3.05です。
今回は、mroongaをWindowsで使う方法を紹介します。
mroongaのWindows版について
mroongaは長らくLinux向けにのみパッケージを提供していました。そのため、mroongaはLinux専用というように思っている人がいるかも知れません。
しかし、テスト版の提供を経て、mroonga 3.05からは、Windows版の提供をはじめました。今後は毎月のリリースにWindows版も対象となります。
これにより、mroongaをより幅広いユーザに試してもらえるようになりました。
提供を始めたのはzipパッケージです。解凍するだけで、使えるようになります。まだインストーラ版は提供していないので、そのあたりは今後の課題です。
mroongaのWindows版では、MariaDBを一緒に配布しています。そのため、別途MySQLをインストールする必要はありません。
MariaDBを一緒に配布しているのは利便性もありますが、MariaDBの一部のソースコードを修正する必要があるというのがその理由です。
mroongaのWindows版を使う
mroongaのWindows版では、2種類のzipパッケージを提供しています。32bit版と64bit版の2種類です。
特に理由がないのであれば、64bit版の使用をおすすめします。
それぞれのzipパッケージは以下からダウンロードすることができます。
zipパッケージをダウンロードしたら、任意のディレクトリに解凍します。zipアーカイブのサイズが約90MBと大きいので、それなりに解凍に時間がかかります。
解凍が終わったら、実際にMariaDBを起動しましょう。
cmd.exeを実行して、コマンドプロンプトを表示します。
解凍したディレクトリのbin
以下にmysqld.exe
があるので、コマンドプロンプトから以下のコマンドを実行してMariaDBを起動します。
bin\mysqld.exe --console
--console
オプションをつけると起動過程を確認することができます。
D:\work\mroonga\mariadb-10.0.3-winx64>bin\mysqld.exe --console
130711 11:42:33 InnoDB: The InnoDB memory heap is disabled
130711 11:42:33 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130711 11:42:33 InnoDB: Compressed tables use zlib 1.2.3
130711 11:42:33 InnoDB: CPU does not support crc32 instructions
130711 11:42:33 InnoDB: Initializing buffer pool, size = 128.0M
130711 11:42:33 InnoDB: Completed initialization of buffer pool
130711 11:42:33 InnoDB: highest supported file format is Barracuda.
130711 11:42:33 InnoDB: 128 rollback segment(s) are active.
130711 11:42:33 InnoDB: 10.0.3-MariaDB started; log sequence number 1603054
130711 11:42:33 [Note] Plugin 'FEEDBACK' is disabled.
130711 11:42:33 [Note] Server socket created on IP: '::'.
130711 11:42:33 [Note] Event Scheduler: Loaded 0 events
130711 11:42:33 [Note] bin\mysqld.exe: ready for connections.
Version: '10.0.3-MariaDB' socket: '' port: 3306 Source distribution
MariaDBが起動できていることがわかります。
では、次にmysqlクライアントを使ってMariaDBに接続してみます。
別のcmd.exeを実行し、もうひとつコマンドプロンプトを開きます。
もうひとつのコマンドプロンプトでmysql.exe
を実行し、起動済みのMariaDBへと接続します。
D:\work\mroonga\mariadb-10.0.3-winx64>bin\mysql.exe
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.0.3-MariaDB Source distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDBに接続できていることがわかります。
では、mroongaのセットアップができていることを確認しましょう。
確認にはshow engines
を使います。
MariaDB [(none)]> show engines;
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)
MariaDB [(none)]>
mroongaがプラグインとしてインストールされていることがわかります。
インストールのドキュメントでは、プラグインのインストールが必要みたいに書いていますが、zipパッケージでは実はこれはすでに対応済みです。
mroongaをすぐに使えるようになっています。
では、次にmroongaを試してみましょう。試すだけなので、test
データベースを使います。
MariaDB [(none)]> use test;
Database changed
MariaDB [test]> show tables;
Empty set (0.00 sec)
ストレージモードでの動作を確認してみましょう。
MariaDB [test]> CREATE TABLE diaries (id INT PRIMARY KEY AUTO_INCREMENT, content
VARCHAR(255), FULLTEXT INDEX(content)) ENGINE = mroonga DEFAULT CHARSET utf8;
Query OK, 0 rows affected (0.38 sec)
まずはdiaries
テーブルを作りました。
MariaDB [test]> INSERT INTO diaries (content) VALUES ("It'll be fine tomorrow.")
;
Query OK, 1 row affected (0.01 sec)
MariaDB [test]> INSERT INTO diaries (content) VALUES ("It'll rain tomorrow.");
Query OK, 1 row affected (0.00 sec)
テストデータを投入しました。
MariaDB [test]> SELECT * FROM diaries WHERE MATCH(content) AGAINST("fine");
+----+-------------------------+
| id | content |
+----+-------------------------+
| 1 | It'll be fine tomorrow. |
+----+-------------------------+
1 row in set (0.01 sec)
全文検索もできていることがわかります。
もうすこし追加でデータを登録しましょう。
MariaDB [test]> INSERT INTO diaries (content) VALUES ("It's fine today. It'll be fine tomorrow as well.");
Query OK, 1 row affected (0.00 sec)
MariaDB [test]> INSERT INTO diaries (content) VALUES ("It's fine today. But it'll rain tomorrow.");
Query OK, 1 row affected (0.00 sec)
追加でデータを登録したので、全文検索のマッチの度合いをスコアから確認してみましょう。以下のクエリを実行します。
MariaDB [test]> SELECT *, MATCH (content) AGAINST ("fine") FROM diaries WHERE MATCH (content) AGAINST ("fine") ORDER BY MATCH (content) AGAINST ("fine")
DESC;
+----+--------------------------------------------------+----------------------------------+
| id | content | MATCH (content) AGAINST ("fine") |
+----+--------------------------------------------------+----------------------------------+
| 3 | It's fine today. It'll be fine tomorrow as well. | 233018 |
| 1 | It'll be fine tomorrow. | 116509 |
| 4 | It's fine today. But it'll rain tomorrow. | 116509 |
+----+--------------------------------------------------+----------------------------------+
3 rows in set (0.00 sec)
複数マッチするほどスコアの値が大きいことがわかります。
ひとまず動作をさらっと確認できたので、MariaDBを終了させましょう。
一旦mysql.exe
を終了します。
MariaDB [test]> quit
Bye
次に、mysqladmin.exe
を使ってシャットダウンします。
D:\work\mroonga\mariadb-10.0.3-winx64>bin\mysqladmin.exe -u root shutdown
これで、MariaDBの起動からmysqlクライアントでの接続、動作確認して、MariaDBの終了するところまでできました。
まとめ
今回は、mroongaをWindowsで使う方法を紹介しました。
mroongaに興味を持ったなら、まずはダウンロードして試してみてください。
mroongaの基本的な動作を知るためのユーザガイドもあります。ダウンロードしたら試してみてください。