MySQLの高速全文検索
MySQL(mariaDB)上で高速全文検索が可能なMroongaを導入してみました。
Windows版の導入はかなり大がかりになり、MySQLの実行ファイル自体の載せ替えが必要になります。
また、テーブル作成時に
ENGINE=Mroonga
を指定し、全文検索対象のカラムには
FULLTEXT INDEX
を作る必要があります。
このようにテーブルを作ります。(テーブルには「青空文庫」から、公開されている江戸川乱歩の小説・エッセイ95作をINSERTしてあります)
普通に検索する際には
WHERE カラム名 LIKE '%検索ワード1%' AND カラム名 LIKE '%検索ワード2%' AND カラム名 LIKE '%検索ワード3%'このように検索条件を入れますが、Mroongaでの全文検索の場合はこうなります。
WHERE MATCH(カラム名) AGAINST ('+検索ワード1 +検索ワード2 +検索ワード3' IN BOOLEAN MODE)
実際に検索してみます。
この場合だと件数が少ないためそれほど検索時間に違いはないのですが、検索対象が何万件となった時に大きな差が出てくる、のだと思います、おそらく……