2013年10月16日水曜日

Mroonga(全文検索)を使ってみる。その1

Sennaのパフォーマンスに限界を感じている方へ!
ちまたで評判の全文検索Mroongaを使ってみてはどうですか?
ということで、kagoya vpsに導入していく手順をまとめました
ので参考になればと思います。
ちなみに、Mroongaとは?(詳細は⇒コチラ

各種バージョン相性があるようなので
今回はソースからインストールする手順となります
*********************************************
インストール手順の参考サイト ⇒ コチラ
*********************************************
参考サイト上のダウンロードファイル名は間違いがるので注意
下記は、それらを解消しているので比較的スムーズに進めると思いますよ~!
ちなみに、、、各種最新バージョンでインストールする場合の手順は、また今度に・・・。

■スペック確認
#cpu情報
cat /proc/cpuinfo
Intel(R) Xeon(R) CPU E5640  @ 2.67GHz 6コア×1

#memory情報
cat /proc/meminfo
4G
■OSバージョン確認
cat /etc/redhat-release
CentOS release 6.3 (Final)
■yumアップデート確認
/var/log/yum.log
■ディレクトリ構成
○ファイルダウンロード先
/usr/local/src/tar/(新規作成)
○解凍先
/usr/local/src/

■MySQL(version:5.5.25a)
#ダウンロード
cd /usr/local/src
mk tar
cd tar
wget http://sourceforge.net/projects/mysql.mirror/files/MySQL%205.5.25a/mysql-5.5.25a.tar.gz/download
cd /usr/local/src
tar zxvf tar/mysql-5.2.25a.tar.gz
cd mysql-5.5.25a

#インストール
yum install -y cmake
#------------------------------------------------------------
# http://www.atmarkit.co.jp/ait/articles/1203/08/news130.html
# MySQLが必要とする外部ソフトウェアのうち、MySQLに付属していない
# ncursesとlibaioは、あらかじめインストールしておく必要があります。
# 次のコマンドを実行すると、開発用パッケージをインストールできます。
sudo yum install ncurses-devel libaio-devel
#------------------------------------------------------------
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make && make install

#設定
cp support-files/my-small.cnf /etc/my.cnf

useradd -s /bin/false -d /dev/null mysql
cd /usr/local/mysql/scripts/
./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --collation-server=utf8_general_ci
chown -R mysql. /usr/local/mysql

cp /usr/local/src/mysql-5.5.25a/support-files/mysql.server /etc/rc.d/init.d/mysql
chmod 755 /etc/rc.d/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

vi ~/.bash_profile
#以下を最終行に追加して保存
export PATH=$PATH:/usr/local/mysql/bin

source ~/.bash_profile
service mysql start

#バージョン確認
mysql --version
■mecab
#インストール
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
cd /usr/local/src
tar zxvf tar/mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset=utf8
make && make install

cd /usr/local/src/tar
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
cd /usr/local/src
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf-8
make && make install


#動作確認
mecab
#解析確認ですから、なんでもOKです
すもももももももものうち
■groonga(version:2.0.4)
#インストール
wget http://packages.groonga.org/source/groonga/groonga-2.0.4.tar.gz
tar zxvf tar/groonga-2.0.4.tar.gz
cd groonga-2.0.4
./configure
make && make install
#10分くらい時間かかります(待ちましょう)
groonga --version

updatedb
■mroonga(version:2.0.4)
#インストール
wget https://github.com/downloads/mroonga/mroonga/mroonga-2.04.tar.gz
cd ..
tar zxvf tar/mroonga-2.04.tar.gz
cd mroonga-2.04/
./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig --with-mysql-source=/usr/local/src/mysql-5.5.25a --with-mysql-config=/usr/local/mysql/bin/mysql_config
make && make install
ldconfig

#設定
mysql -u root
INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
show engines\G

mysql -uroot -p -e "SHOW VARIABLES LIKE 'mroonga_%'"
Enter password:
+------------------------------------+-------------+
| Variable_name                      | Value       |
+------------------------------------+-------------+
| mroonga_database_path_prefix       |             |
| mroonga_default_parser             | TokenBigram |
| mroonga_default_wrapper_engine     |             |
| mroonga_dry_write                  | OFF         |
| mroonga_enable_optimization        | ON          |
| mroonga_libgroonga_version         | 2.0.4       |
| mroonga_log_file                   | groonga.log |
| mroonga_log_level                  | NOTICE      |
| mroonga_match_escalation_threshold | 0           |
| mroonga_version                    | 2.04        |
+------------------------------------+-------------+

#動作確認
use test;
create table hoge ( id int primary key auto_increment, content varchar(255), fulltext index(content)) engine = mroonga default charset utf8;
insert into hoge(content) values("全文検索はめんどうだな");
insert into hoge(content) values("全文検索はほげほげです");
insert into hoge(content) values("全文検索は、はげです");
insert into hoge(content) values("全文検索はバルス");
insert into hoge(content) values("あげあげほげほげ");
select * from hoge where match(content) against("ほげ");
+----+-----------------------------------+
| id | content                           |
+----+-----------------------------------+
|  2 | 全文検索はほげほげです            |
|  5 | あげあげほげほげ                  |
+----+-----------------------------------+
2 rows in set (0.00 sec)

さて、これでmroongaを使用できるところまでは完了です。
パフォーマンスの確認は、「その2」で記述しますのでお楽しみに!

0 件のコメント:

コメントを投稿