INFORMATION
テクノロジ

Apache Lucene 8.0.0 が公開されました!

Apache Lucene 8.0.0 が 2019 年 3 月 14 日に公開されました。

Apache Lucene は完全に Java で書かれたハイパフォーマンスな全文検索エンジンです。今回はメジャーアップデートが実施されたため,アップデートの内容が多岐に渡ります。本案内では,その中でも特徴的な機能や変更を以下に記します。

Lucene8.0 の特徴的なアップデート

  • TermQuery,PhraseQuery,BooleanQuery では,ランキング下位のドキュメントの正確なヒット件数を算出しないことで,クエリのレスポンスタイムが向上しました。特に TermQuery と OR 検索については一部レスポンスタイムが悪化したケースもありますが,ほとんどのクエリにおいて何倍も高速化されています。
  • 前項の改善によって,いくつかの API が更新されています

    • TopDocs.totalHits は正確なヒット件数を持つ long 型ではなく,少なくともこの件数はヒットしていると言った概算値を持つオブジェクトになりました。
    • ヒット件数を概算値で持つ改善はデフォルト設定となるため,IndexSearcher の search と searchAfter メソッドは 1000 件までは正確にヒット件数を計算し,これ以上のヒット件数の場合は概算値となります。
    • クエリのスコアは 0 以上にしなければなりません。

  • 正確なヒット件数が不要な場合の TermQuery の処理最適化のため,Postings(転置インデックスにおける単語に関連付いているドキュメントIDのリスト)に,最適化用データ(Skip Data)をインデックスするようになりました。
  • DocValues で jump tables を導入したことで,定数時間で読み込み時間が可能になりました。この実装によって,一部のドキュメントのフィールドにしか値が入っていないような,疎なフィールドの取得時間が改善されます。
  • FST 辞書が MMapDirectory を利用するようにしたことで,辞書オブジェクトがヒープ外にロードされるようになりました。これによってヒープの使用量を抑えられるようになりました。
  • 新設された FeatureField で PageRank のような固定値を保持できるようになり,これをスコアに反映できるようになりました。さらに,LongPoint#newDistanceFeatureQuery と LatLonPoint#newDistanceFeatureQuery を利用して,時間的・地理的な距離に応じたブーストを行えるようになりました。これらの新機能はトータルヒット件数の集計が不要な検索に最適化されています。例えば,PageRank がスコアに対して大きな重みを持っているのであれば,Lucene は低いページランク値を持っているドキュメントをスキップする場合もあります。

リリースの詳細と Lucene ダウンロードについて

すべての新機能および変更点に関しては CHANGES.txt を参照してください。
https://lucene.apache.org/core/8_0_0/changes/Changes.html

現在の最新の Lucene ダウンロードについては下記 URL を参照して下さい。
http://lucene.apache.org/core/mirrors-core-latest-redir.html


トレーニングコース

ロンウイットのトレーニングは、Lucene/Solrの経験豊富なコミッターの
監修のもと開発されたハンズオン(実習)形式のコースです。

セミナー

ロンウイットのApache Software Foundationコミッターが、情報検索の基礎、自然言語処理、そして、ユーザにとっての効果についてご説明させていただきます。