INFORMATION
ニュース

[警告] Apache LuceneとApache SolrをJava 7で使うときの注意点

本日未明、ApacheプロジェクトよりLucene/Solrに関する重要なお知らせがございましたので、ここに拙訳を掲載します。本文はこちらをご覧ください。

Apache LuceneとApache Solrユーザの皆様こんにちは。そして他のJavaベースのApacheプロジェクトのユーザの皆様こんにちは。

オラクルは本日Java 7をリリースしました。残念なことにいくつかのループを誤ってコンパイルするホットスポットコンパイラ最適化が含まれています。これはいくつかのApacheプロジェクトのコードに影響を与えます。ときどきはJVMをクラッシュさせたりするだけですが、他のケースでは計算結果が正しくなくなりアプリケーションのバグを引き起こします(ホットスポットバグ 7070134 [1], 7044738 [2], 7068051 [3] を参照してください)。

Apache LuceneコアとApache Solrは2つのApacheプロジェクトであり、これらのバグの影響を受けます。本日までにリリースされたすべてのバージョンが影響を受けます。Solrユーザはデフォルトの設定で、ドキュメントをインデックスし始めるとすぐにSIGSEGVでJavaがクラッシュします。これは有名なPorter Stemmerがこのバグの影響を受けているためです(LUCENE-3335 [4] を参照)。Luceneでは他のループも誤ってコンパイルされ、インデックスが壊れる原因となります(特にLucene trunkをパルスコーデックで使っている場合やその他のループも影響を受けます。LUCENE-3346 [5] を参照)。

これらの問題は、Java 7の公式リリースの5日前に発見されました。そのためオラクルはこれらのバグを修正する時間がありませんでした。私たちの問い合わせに対し、オラクルはこれらの修正をサービスリリースu2に入れることを提案してきました(最終的にはu1となりました。[6] を参照)。これはつまり、Apache Lucene/SolrをJava 7ではUpdate 2まで使えないことを意味します!もしJava 7を使うのであれば、どうぞApache Lucene/Solrに対してバグチケットをオープンしないでください、私たちコミッターのせいではありません!少なくともJVMオプション-XX:-UseLoopPredicate を使ってループ最適化をはずすことによりインデックスの破壊を避けることができます。

注意:Java 6ユーザもJVMオプション-XX:+OptimizeStringConcat または -XX:+AggressiveOpts を明示的に使うことでこれらの問題に遭遇します。

ホットスポット最適化関連のスイッチはどんなJavaバージョンであれ、十分なテストをしてからお使いください!

Java 7にアップグレードする場合、再インデックスをするのを忘れないでください。Java 7で出荷されるユニコードバージョンが変わっており、トークナイズのふるまいが異なります(アルファベットの小文字正規化など)。詳しくは配布パッケージに含まれる JRE_VERSION_MIGRATION.txt を参照してください!

Luceneプロジェクトを代表して、
Uwe


KandaSearch

KandaSearch はクラウド型企業向け検索エンジンサービスです。
オープンAPIでカスタマイズが自由にできます。

  • セマンティックサーチ

    人間が理解するように検索エンジンがテキストや画像を理解して検索できます。

  • クローラー

    検索対象文書を収集するWebクローラーが使えます。

  • 簡単操作のUIと豊富なライブラリー

    検索や辞書UIに加え、定義済み専門用語辞書/類義語辞書やプラグインがあります。

  • ローコードで低コスト導入

    検索UIで使い勝手を調整した後、Webアプリケーションを自動生成できます。

セミナー

企業が検索エンジンを選定する際のポイントから、
実際の導入デモをお客様ご自身でご体験!