毎回忘れる海外の全文検索SaaSサービスの名前「Algolia」と、ざっくり全文検索サービス紹介

GitLabの全文検索に使われていたりFirebaseの全文検索に推奨されているSaaS全文検索サービスの名前を毎回忘れるのでメモ。

Algolia

です。

2021/3/28現在では、公式ページの利用会社ロゴにSlackがあるなぁ。

使ってみたとかではなく、全文検索の話題の時に「あれ、なんて名前だっけ、あれあれ」と毎回忘れているので、本当に単なる備忘録。

ちょっと古いけど、使ってみた系はこのあたりかな?

qiita.com

qiita.com

全文検索エンジン/システム/サービスあれこれ

さすがに名前を書いておくだけでは薄すぎるので、ざっくりJavaで使える全文検索エンジンやシステム、サービスから、使ったり調べたことがあるものを書き出してみる。

日本語で全文検索しようと思うと、形態素解析器どうするかという問題もあるが、それは置いておく。

Apache Lucene

lucene.apache.org

Java製の検索エンジンライブラリ。名前の通り、Apacheのトップレベルプロジェクト。後述のApache SolrやElasticsearchも、バックエンドではLuceneを使っている。

インデックスを生成し、インデックスの内容を確認するには Luke というGUIツールを使用する。以前は別途ダウンロードする必要があったが、Lucene 8.1以降はLuceneのモジュールになった模様

Luceneを直接使ったことがあるか、トラブルシューティングがしんどかった思い出。

Apache Solr

solr.apache.org

Lucene検索エンジンとして使用する、全文検索システム。サーバーとして起動して、API全文検索することができる。

ずっとLuceneのサブプロジェクトだったが、2021年2月17日、ついにApacheトップレベルプロジェクトに昇格した

トラブルシューティング時に、Solr Adminからインデックスの状態を確認したり、クエリ実行できるのが大変ありがたかった。ライブラリとシステムなので単純比較できるものではないが、Luceneよりだいぶ確認・検証しやすくなった。

Elasticsearch

www.elastic.co

これまたLuceneを検索エンジンとして使用する全文検索システム。

昔のSolrではクラスターを構築するのが大変で、スケールアウトが難しかった(自分は固定台数でしか構築経験がない、その後のバージョンアップでSolrCloudなどの機能が拡充されたので、今は解消されているかも)。

Elasticsearchは後発の強みとして、あらかじめ分散環境で動作するよう設計されている。

また、サーバーを用意して導入する以外に、Elastic Cloudを使えばAWSGCP、Azure上でマネージドサービスとして利用することもできる。

Fess

fess.codelibs.org

CodeLibs Projectが提供している全文検索システム。全文検索にはElasticsearchを使用している。

Fessを使うメリットは何かというと、Webクローラが利用できる点かと思う。

自社のWebページを全文検索したい場合、サイトの情報を全文検索エンジンに登録する必要がある。静的ページを都度登録するだけでも面倒だし、動的ページがあればなかなか手動で行うのは難しい。

ElasticsearchであればElastic Site Searchを使うこともできるが有料のようなので、無料でWebサイトの全文検索をしたいのであれば、Fessを候補としてもいいかもしれない。*1

その他

AWSやAzureでも、マネージドな全文検索サービスを提供している。

振り返り

とりあえず記事にしたので、「Algolia」はもう忘れないだろう、たぶん。

*1:なお、書いている本人はFessを使ったことがない