GitLabの全文検索に使われていたり、Firebaseの全文検索に推奨されている、SaaSの全文検索サービスの名前を毎回忘れるのでメモ。
Algolia
です。
2021/3/28現在では、公式ページの利用会社ロゴにSlackがあるなぁ。
使ってみたとかではなく、全文検索の話題の時に「あれ、なんて名前だっけ、あれあれ」と毎回忘れているので、本当に単なる備忘録。
ちょっと古いけど、使ってみた系はこのあたりかな?
全文検索エンジン/システム/サービスあれこれ
さすがに名前を書いておくだけでは薄すぎるので、ざっくりJavaで使える全文検索エンジンやシステム、サービスから、使ったり調べたことがあるものを書き出してみる。
日本語で全文検索しようと思うと、形態素解析器どうするかという問題もあるが、それは置いておく。
Apache Lucene
Java製の検索エンジンライブラリ。名前の通り、Apacheのトップレベルプロジェクト。後述のApache SolrやElasticsearchも、バックエンドではLuceneを使っている。
インデックスを生成し、インデックスの内容を確認するには Luke
というGUIツールを使用する。以前は別途ダウンロードする必要があったが、Lucene 8.1以降はLuceneのモジュールになった模様。
昔Luceneを直接使ったことがあるか、トラブルシューティングがしんどかった思い出。
Apache Solr
Luceneを検索エンジンとして使用する、全文検索システム。サーバーとして起動して、APIで全文検索することができる。
ずっとLuceneのサブプロジェクトだったが、2021年2月17日、ついにApacheトップレベルプロジェクトに昇格した。
トラブルシューティング時に、Solr Adminからインデックスの状態を確認したり、クエリ実行できるのが大変ありがたかった。ライブラリとシステムなので単純比較できるものではないが、Luceneよりだいぶ確認・検証しやすくなった。
Elasticsearch
これまたLuceneを検索エンジンとして使用する、全文検索システム。
昔のSolrではクラスターを構築するのが大変で、スケールアウトが難しかった(自分は固定台数でしか構築経験がない、その後のバージョンアップでSolrCloudなどの機能が拡充されたので、今は解消されているかも)。
Elasticsearchは後発の強みとして、あらかじめ分散環境で動作するよう設計されている。
また、サーバーを用意して導入する以外に、Elastic Cloudを使えばAWS、GCP、Azure上でマネージドサービスとして利用することもできる。
Fess
CodeLibs Projectが提供している全文検索システム。全文検索にはElasticsearchを使用している。
Fessを使うメリットは何かというと、Webクローラが利用できる点かと思う。
自社のWebページを全文検索したい場合、サイトの情報を全文検索エンジンに登録する必要がある。静的ページを都度登録するだけでも面倒だし、動的ページがあればなかなか手動で行うのは難しい。
ElasticsearchであればElastic Site Searchを使うこともできるが有料のようなので、無料でWebサイトの全文検索をしたいのであれば、Fessを候補としてもいいかもしれない。*1
その他
AWSやAzureでも、マネージドな全文検索サービスを提供している。
- AWS
- Amazon CloudSearch: マネージドな検索サービス、クエリパーサーとしてLuceneが使用可能
- Amazon Elasticsearch Service: マネージドなElasticsearch
- Azure
振り返り
とりあえず記事にしたので、「Algolia」はもう忘れないだろう、たぶん。
*1:なお、書いている本人はFessを使ったことがない