PuzzleLuceneのConcurrentMergeSchedulerのデッドロック問題(あくまでも可能性であり、アプリケーションでへんなことをしていなければ大丈夫)が、JIRAにチケット管理されないまま修正されたので、メモしておく。Puzzle」のサイトが手軽にできてよかったので簡単に紹介したい。Clowns私は問題文(制限事項)をよく読まずに1秒でできたと思ったらちょっと違っていた。ヒントはVolkswagenのadd()メソッドがsynchronizedになっているところに注目する・・・という感じだろうか。Puzzleは現在3つまで公開されている。決算期の今は実は受講の大チャンス!あなたの部署の余った予算を有効活用しましょう。予算が余っていないか、上司に聞いてみましょう。7の不具合が改修され、Lucene/Solrの動作確認が取れたため、アナウンスメールが流された。ロンウイットのホームページにも掲載したが、前回同様、こちらにも拙訳を掲載する。[1]をリリースしました。リリースノートおよびLuceneコミッターによるテスト結果から、7月28日に報告されたすべての不具合は本リリースにより改修されたことを確認しました。StemmerはSIGSEGVによるクラッシュを発生させなくなりました。7u1上で安全に実行可能です。6u29[2]もリリースしました。6において-XX:+AggressiveOptsまたは-XX:+OptimizeStringConcatのJVMスイッチを使用した際に同じ不具合起こしていたものですが、こちらも改修されました。-XX:+AggressiveOptsのような"experimental"なJVMオプションを本番環境で使うべきではありませんけれども!私たちは、すべての人にこの最新バージョン6u29にアップグレードすることをお奨めいたします。7にアップグレードする際は、インデックスを再作成するようにお願いします。7でリリースされるユニコードのバージョンが変わるため、トークナイズの振る舞いが異なるためです(小文字など)。WednesdayBooleanQueryの不具合修正(2.9.1)BooleanQueryで検索にヒットするはずのドキュメントが漏れる不具合が先日リリースされたばかりの2.9.0で発覚した。同じテストコードは2.4.1では出ないので、2.9.0で新たに入り込んだバグである。修正され、2.9.1に含まれる。2.9.1にはFastVectorHighlighterの修正も含まれる。2.9.1を取り込む予定である。2.3まではDocumentにadd()した(名前の異なる)Fieldの順番は、IndexReader/IndexSearcherで取得したDocumentに対してfields()/getFields()を実行して取得したときにも順番が保たれていた。ところが、LUCENE-1301の機能改善の時にこのルールが破られてしまった。2.4ではDocumentに対してfields()/getFields()を実行して取得したFieldのリストは保存時の順番とは異なってしまう不具合が残ったままである。valued;Documentに対して同じフィールド名で2つ以上のフィールドをadd()すること)の順序はいずれのバージョンでも保たれている。EOF"例外に出会う可能性がある不具合が報告されている。例外にならなくても正しいフィールド名が返らない可能性がある。2.4にアップグレードした際、実行時の動作が異なってしまう可能性があることが判明し、メーリングリストで注意喚起されていたので、ここで紹介しておこう。QueryParserを拡張し、addClause()やgetBooleanQuery()をオーバーライドしていたアプリケーションは、(従来のVectorではなく)List引数を使用する新しいメソッドを使わなければ、フレームワークから呼ばれなくなってしまう。addClause()やgetBooleanQuery()はList引数を使用する新しいメソッドを使うように書き直す必要がある。getValues()およびgetBinaryValues()を使っているアプリケーションは、これまで戻り値のnullチェックをしているところを.size()の長さ0チェックに変更する必要がある。1.6.0_10で改修されたと見られていた現象がいまだ発生するという報告があった:https://issues.apache.org/jira/browse/LUCENE-1342すでにSunに報告済みでAcceptされているとのこと。非常にまれにしか発生せず、再現が難しいバグのようである。1.6.0_10に反映されるようだ。1.6.0_04以上で発生するエラーさて、先日の週末はパソコンの復旧でつぶれた私だが、容量アップしたハードディスク(60GBから120GB)にいろいろソフトをインストールして現在は復活している。インストールしたソフトは特に理由がなければそのときの最新バージョンを入れた。Javaは1.6.0_07に上がったので、LUCENE-1282で騒がれた不具合が再現するか試してみた。Databaseにファイルされている:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6707044上記URLには再現させるための簡単なプログラムが掲載されている。Crash.main(Crash.java:6)ただし、上記URLに掲載されているプログラムそのままでは私の環境では起こらず、LUCENE-1282にあるとおり、docNumを1000000に、jを300000に変更すると発生した。上記バグは当初はSunによりプライオリティがLowでファイルされていたが、現在は88票もの投票を受け、プライオリティがHighに変更されている。比較のポイント商用検索エンジンを購入した企業担当者は読まないでください。McCandlessFastVectorHighlighterについて解説記事を寄稿しました。