【アパッチルシーン】

Apache Lucene とは?

💡 検索エンジンたちの「共通の心臓部」、全文検索のデファクトライブラリ。
📌 このページのポイント
Apache Lucene の仕組み テキスト入力 文書 / クエリ アナライザー 分かち書き / 正規化 ストップワード除去 転置インデックス りんご → 文書1, 文書3 みかん → 文書2 バナナ → 文書1, 文書4 BM25 スコアリング 出現頻度・文書長を考慮して関連度スコアを算出 Elasticsearch Lucene を内包 Apache Solr Lucene を内包 OpenSearch Lucene を内包 ▲ これらすべての検索エンジンが Lucene を内部ライブラリとして利用している
Lucene は転置インデックスと BM25 スコアリングを提供する検索の基盤ライブラリ
ひよこ ひよこ

ElasticsearchとSolrって全然別物なの?

ペンギン先生 ペンギン先生

実は両方ともApache Luceneというライブラリを使っているんだよ。Luceneが検索の心臓部で、ElasticsearchやSolrはその上に使いやすいAPIや管理機能を加えたものなんだ。

ひよこ ひよこ

じゃあLucene自体を直接使うことはあるの?

ペンギン先生 ペンギン先生

あるよ! 細かく制御したいアプリケーションや、検索機能を独自に組み込みたいときにJavaアプリからLuceneを直接使うことがあるんだ。

ひよこ ひよこ
ペンギン先生 ペンギン先生

「どの単語が、どの文書に含まれるか」を逆引きできる索引だよ。たとえば『りんご → 文書1, 文書3』みたいに単語から文書を探せるんだ。だから全文検索がすごく速くなるよ。

ひよこ ひよこ

BM25ってどういう仕組みなの?

ペンギン先生 ペンギン先生

検索クエリに対してどの文書が一番関連しているかをスコアで計算する方式だよ。単語の出現頻度や文書の長さを考慮して、より的確な結果を上位に出してくれるんだ。

ひよこ ひよこ

アナライザーって聞いたことあるけど何をするの?

ペンギン先生 ペンギン先生

テキストをインデックス化する前に、分かち書き・小文字化・ストップワード除去などをする前処理ツールだよ。日本語なら形態素解析器(Kuromojiなど)をアナライザーとして使うんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Lucene」って出てきたら「ElasticsearchやSolrの中核にある全文検索ライブラリ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Lucene」 = アパッチルシーン
💬 開発者Doug Cuttingの妻の名前に由来するという説がある名前だよ。1999年に公開されて、2001年にApache Software Foundationへ寄贈されたんだ。
← 用語集にもどる