【アパッチルシーン】

Apache Lucene とは?

最終更新:
💡 全文検索をアプリに組み込むためのライブラリ

Javaのオープンソース検索ライブラリ。転置インデックスやBM25などを使う全文検索を提供し、Elasticsearch・Solr・OpenSearchの検索機能も支える。

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

参考資料

← 用語集にもどる