【アパッチルシーン】
Apache Lucene とは?
最終更新:
💡 全文検索をアプリに組み込むためのライブラリ
Javaのオープンソース検索ライブラリ。転置インデックスやBM25などを使う全文検索を提供し、Elasticsearch・Solr・OpenSearchの検索機能も支える。
📌 このページのポイント
- 単語から文書を探す転置インデックスを作るJavaライブラリ
- BM25などで検索語と文書の関連度を計算する
- アナライザーでテキストを分割・正規化して扱う
- Elasticsearch・Solr・OpenSearchの内部で使われる
ElasticsearchとSolrは、Luceneとどう違うの?
どちらもLuceneを使う検索サーバーだよ。Luceneが検索の基盤となり、その上でネットワーク越しのAPIや管理、分散処理などを提供する。OpenSearchも内部でLuceneを使っている。ただし、同じライブラリを使うことと、製品の機能や設定が同じことは別なんだ。
Luceneを直接使うこともある?
転置インデックスって何?
単語から、その単語を含む文書を探せる索引だよ。たとえば文書AとCに「りんご」が入っていれば、「りんご → A,C」と登録する。検索時にはその対応を使って候補を探せるので、毎回すべての文書を最初から読み直す必要を減らせるんだ。
BM25の点数が高いほど、正しい情報なの?
点数は検索語と文書の関連度の目安で、内容が真実かどうかの判定ではないよ。単語の出現頻度、ほかの文書での珍しさ、文書の長さなどを使って計算する。単語を繰り返せば際限なく点が増えるわけでもない。用途に合う検索結果になるか、実際の質問で評価する必要があるんだ。
アナライザーは何をするの?
文章を検索で扱う単語へ分け、必要に応じて表記を正規化するよ。日本語向けにはKuromojiなどがある。索引を作る時と検索語を処理する時で、単語の扱いが合っていないと期待した文書を見つけにくくなる。どんな文章を何で検索するかに合わせて選ぶんだ。
まとめ:ざっくりこれだけ覚えればOK!
📖 おまけ:英語の意味
「Apache Lucene」 = アパッチルシーン
💬 公式FAQによると、Luceneは開発者Doug Cuttingの妻のミドルネームで、妻の母方の祖母の名前でもあるんだ。ライブラリの名前であり、検索方式そのものの名称ではないよ。