組み込み型全文検索エンジン「Senna」のインストール - WEB制作者の苦悩
WEB制作者の苦悩[=>]
WEBサイト制作におけるTIPSなどをちまちまと書いてます。 Home[=>]
Archives[=>]
CakePHP[=>]
Home[=>]
> MySQL[=>]
> 組み込み型全文検索エンジン「Senna」のインストール Newer[=>]
Older[=>]
組み込み型全文検索エンジン「Senna」のインストール
Posted by: エガシラ リュウジ 2006年8月26日 16:06 MySQL[=>]
うちのサーバーに組み込み型の全文検索エンジンである「Senna[=>]
」をインストールした。 データベースサーバーとしてMySQLを入れているんが、データ数が多くなってくると、あいまい検索がアホみたいに遅い。
何が最速のDBエンジンですか?と言いたくなるほど遅い。
たとえば、14万件のデータで、LIKE '%検索語句%'で検索すると、1分オーバー。
この状況で、検索エンジンを作ったところで誰がこんなサービス使うかっていう話で。 MySQLの仕様として、char型、varchar型、text型にもインデックスをつける事ができるが、検索語句の頭に「%」を付加した場合、インデックスは利用されないとの事。
という事は、検索ごとに14万件を頭から総ナメしているわけだ。 ただこれは、私が「フルテキストインデックス(全文検索)」って言葉を知らなかっただけで、通常、検索エンジンなんかはこの「フルテキストインデックス(全文検索)」というものを使うらしい。
この機能を使うとデータを単語ごとに区切った状態でインデックスを作成する為、検索速度も通常のインデックス検索並になる。
MySQLも、3.23より「フルテキストインデックス」をサポートしている。が、いまだに(現時点で、5.0.24)日本語は対応していないとの事。 英語の文章は最初から単語で区切られている為、インデックスも正常に作成されるが、日本語は単語の区切りにスペースなどを入れない為、インデックスが正常に作成されない。
となると、検索しても、目的のデータがひっかからないという事だ。
じゃあ、どうするか。日本語の単語データベースを作り、データを格納する際に単語で区切るか。。 んー。。無理。
必死でGoogleさんに問い合わせをかけたところ「Senna」という組み込み型の全文検索エンジンのサイトにたどり着いた。
この「Senna」は名前のとおり、日本語の全文検索を可能にするようだ。また、MySQLに組み込む事ができるとの事。
ただし、既にMySQLを導入済の場合は、ソースから再コンパイルする必要がある。。
MySQLのコンパイル時にはいつも手こずっているんで、辛い。。が、それをする以外ない。
以下「Senna」の導入手順。 Mecabのインストール
まず、形態素解析エンジンである「Mecab」をインストールする。
形態素解析エンジンというのは、日本語の単語データベースのようなもの。 以下のサイトより「Mecab」をダウンロード。
http://mecab.sourceforge.jp/#download[=>]
そして、ソースコンパイル。 $ tar zxfv mecab-0.93.tar.gz
$ cd mecab-0.93
$ ./configure
$ make
$ make check
# make instal IPA辞書のインストール
次に、Mecab用の辞書をインストーする。 以下のサイトより「IPA辞書」をダウンロード。
http://mecab.sourceforge.jp/#download[=>]
そして、ソースコンパイル。 $ tar zxfv mecab-ipadic-2.7.0-20060707.tar.gz
$ cd mecab-ipadic-2.7.0-20060707
$ ./configure
$ make
# make instal Sennaのインストール
そしていよいよ「Senna」のインストール。 以下のサイトより「Senna」をダウンロード。
http://qwik.jp/senna/Download.html[=>]
そして、ソースコンパイル。ふー。 $ tar xvfz senna-0.8.0.tar.gz
$ mv senna-0.8.0 senna
$ cd senna
$ ./configure --prefix=/usr
$ make
$ make instal そして、半日ぐらいハマる。 makeを行った場合、ほ
■Next Page
・Full Browser
ja.abc-yoga.podzone.org | Contact