関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - |
Lucene/SolrをJava 7で使うときの注意(あるいはJava 6以前でもホットスポットのバグを踏む可能性あり)
本日リリースされたオラクルのJava 7に関し、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



OutOfMemoryErrorでお困りでしたら・・・Solr 3.3 9月 トレーニング受講者募集中

Solr トレーニングコースパンフレットダウンロードはこちら
| 関口宏司 | その他(分類不能) | 10:06 | comments(0) | trackbacks(0) |
-XX:+AggressiveOpts はHotspotをクラッシュさせる件
Java 6で-XX:+AggressiveOpts オプションをつけてLucene/Solrを実行するとHotspotがクラッシュ、SIGSEGV となる。特にPorterStemFilterを使っているときに起こることが確認されている。-XX:+AggressiveOpts オプションはJava 7ではデフォルトらしい。Java 6では-XX:+AggressiveOpts オプションを使わなければ回避できる。

メーリングリストより引用

OutOfMemoryErrorでお困りでしたら・・・Solr 3.3 9月 トレーニング受講者募集中

Solr トレーニングコースパンフレットダウンロードはこちら
| 関口宏司 | その他(分類不能) | 07:35 | comments(0) | trackbacks(0) |
関数クエリとソートの面白い組み合わせ
Solr本にも掲載されているQueryElevationComponentは、特定のクエリに反応して特定のドキュメントのランキングを意図的に上位表示することができるが、これは上位表示したいドキュメントのユニークキーをソートで強制的に上位表示することで実現している。

似たような要件で、ある特定のキーワードとの関連度でソートを行い、その後ユーザクエリとの関連度でランキング(ソート)を行いたい場合、つまり:

sort=ある特定のキーワードとの関連度 desc,score desc


としたい。この場合は、QueryElevationComponentは使えない(ある特定のキーワードとの関連度ではないため)が、Solr 3.1から可能になった関数クエリによるソートを使って次のようにすれば可能である:

sort=query({!lucene v='text:solr'}) desc,score desc


query()関数は通常クエリのスコアを返すので、まずそれでソートを行い、次いで通常のスコア値によるソートを行っている。

メーリングリストより引用

関数クエリでお困りでしたら・・・Solr 3.3 9月 トレーニング受講者募集中

Solr トレーニングコースパンフレットダウンロードはこちら
| 関口宏司 | Solr | 11:37 | comments(0) | trackbacks(0) |
Luceneのアーキテクチャを紹介するサイト
ちょっと古い情報もあるが・・・

http://www.codemaps.org/s/Lucene_Core
| 関口宏司 | Luceneとは? | 09:59 | comments(1) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< July 2011 >>
+ LINKS
検索エンジン製品 - 比較のポイント
商用検索エンジンを購入した企業担当者は読まないでください。ショックを受けますから・・・
>>製品比較 10のポイント
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
+ RECOMMEND
Lucene in Action
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless
FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
qrcode
+ SPONSORED LINKS