BloGroonga

2022-11-15

グルカイ!第23回「Groonga関連プロダクトのコンセプトについて」を開催しました!

グルカイ!23回 「Groonga関連プロダクトのコンセプトについて」の内容をまとめました!

今回は、Groonga関連プロダクトのコンセプト(何を大事に開発しているか)について解説いただきました!

  • Groongaが大事にしていること。

    • 情報の鮮度。登録された情報を即時検索できる。
    • 検索速度
    • ユーザーが欲しい情報を見つけるのを支援する。
      • ユーザーが情報を見つけられないと意味がないため。
      • ドリルダウンを高速にする等。
  • Mroonga/PGroongaが大事にしていること。

    • 使いやすさ。 全文検索は使い始めるのも使いこなすのも難しい。 最近はWebアプリケーションを作る人は多く、Webアプリケーションを作る時はライブラリーやフレームワークを使って作成します。 これらのライブラリーやフレームワークにはRDBMSへのアクセスがしやすいような機能がついているが、全文検索エンジンにはそういったサポートはありません。 全文検索エンジンは、ユーザーが知るべきことが多いので使いにくいところがあります。。(初期コストも大きい。メンテナンスコストも大きい。) WebアプリケーションのフレームワークにはRDBMSサポートが組み込まれているので、その知識+αくらいで全文検索エンジンも使えると使いやすいと考えています。 普段、MySQL/PostgreSQLを使っている人が使いやすいということを狙ったプロダクトです。

      Groonga単体を使うというのもありですが、学習コストが高いので万人に受けるわけではありません。 普段MySQL/PostgreSQLを使っている人からも使いやすいようになっています。

      例えばMroongaでは、MySQLの既存機能と馴染むように作っています。 MySQLには全文検索用のSQLの構文(MATCH AGAINST)があるので、それを使ってGroongaを使った全文検索ができるようにしています。 MATCH AGAINST はMySQLの標準機能なので、 Webアプリケーションのフレームワークのサポートも期待できます。 インデックスの作成もMySQLの標準機能を使ってできるようにしています。

      拡張をする場合もなるべくMySQLの既存の仕組みに乗せるようにしています。

  • ラングバとは?

    • 文書検索ラングバ:クローラーで文書を取得して、UIも作れる、ChpaTextでテキスト抽出してRroongaで登録して全文検索できるようにするシステムです。
    • RroongaはRubyからGroongaを使えるようにするプロダクトです。Mroonga、PGroongaと同様Rubyと馴染むように作っています。
    • ActiveGroonga, ActiveGroonga Fabrication はm現状メンテナンスできてないません。 (ActiveRecordと同じように使えるようにしていたが、ActiveRecordの開発速度が早すぎてメンテナンスが追いついていません。)
    • ChupaText:テキストデータでないものからテキストを抽出する。テキストにすることで全文検索の対象にできるためです。