この発表のためにmroonga_query_expand()
を実装した須藤です。db tech showcase Tokyo 2017で「MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム」という話をしました。一昔前の全文検索システムはそこそこ速く全文検索してキーワードをハイライト表示できれば普通でしたが、最近の全文検索システムはそれだけだと機能不足で、オートコンプリートやクエリー展開や関連エントリー表示機能などがあって普通というくらいにユーザーの要求レベルがあがっています。これは、GoogleやAmazonなど便利な検索サービスに慣れたユーザーが増えたためです。そんな時代の変化に対応できる全文検索エンジンがGroongaです。GroongaはMySQL・MariaDB・PostgreSQLから使えるためSQLを使って簡単にイマドキの全文検索システムを実装できます。しかも、運用も楽です。そんな話です。
関連リンク:
内容
まず、どういうときにMroonga・PGroongaを使うアプローチを選べばよいかという指針を示しました。
-
全文検索の知識ナシ
-
全文検索だけできれば十分
-
データが少ない(数十万件とか):RDBMSで
LIKE
-
データが多い:Mroonga・PGroonga
-
-
イマドキの機能が必要
- Mroonga・PGroonga
-
-
全文検索の知識アリ
-
カリカリにチューニングしたい
- RDBMS + 全文検索サーバー
-
それ以外
- Mroonga・PGroonga
-
次に、以下の機能をMroonga・PGroongaで実現するにはどういうSQLを使えばよいか説明しました。
-
全文検索
-
キーワードハイライト
-
周辺テキスト表示
-
入力補完
-
同義語展開
-
関連文書の表示
最後に、次のステップとして構造化データ(オフィス文書・HTML・PDFなど)の対応方法について少し言及しました。Groongaプロジェクトは構造化データからテキスト・メタデータ・スクリーンショットを取得するツールとしてChupaTextを開発しています。コマンドラインでもHTTP経由でもライブラリーとしても使えます。HTTP経由で使う場合はDocker・Vagrantを使うのが便利です。依存ライブラリーを揃える手間がないからです。
まとめ
Mroonga・PGroongaを使ってイマドキの全文検索システムを実装する方法を紹介しました。コンサルティングやチューニングや開発支援などを提供するサポートサービスがあります。社外秘のデータでお困りの場合はお問い合わせください。NDAを結んだ上で対応できます。
Mroongaはインサイト・テクノロジーさんが進めているPinkshiftでも活用されています。MySQL・MariaDB・PGroongaで高速全文検索が必要ならMroonga・PGroongaを試してみてください。