関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
ConcurrentMergeSchedulerのデッドロック問題とJava Puzzle
LuceneのConcurrentMergeSchedulerのデッドロック問題(あくまでも可能性であり、アプリケーションでへんなことをしていなければ大丈夫)が、JIRAにチケット管理されないまま修正されたので、メモしておく。

メールスレッド
修正(4.0)
修正(3.6)

ところで、このメールスレッドの中で紹介されていた「Java Puzzle」のサイトが手軽にできてよかったので簡単に紹介したい。

Wouter Coekaerts - Java Puzzle 1: Clowns

私は問題文(制限事項)をよく読まずに1秒でできたと思ったらちょっと違っていた。ヒントはVolkswagenのadd()メソッドがsynchronizedになっているところに注目する・・・という感じだろうか。

Java Puzzleは現在3つまで公開されている。



あの米Clouderaディレクターも参加したロンウイットのSolrトレーニング・・・受講者インタビュー記事
決算期の今は実は受講の大チャンス!あなたの部署の余った予算を有効活用しましょう。予算が余っていないか、上司に聞いてみましょう。        Solr 3.5 4月 トレーニング受講者募集中

| 関口宏司 | 不具合関連 | 11:23 | comments(0) | trackbacks(0) |
Java 7u1 / Java 6u29 の不具合改修の件
先日お知らせしたJava 7の不具合が改修され、Lucene/Solrの動作確認が取れたため、アナウンスメールが流された。ロンウイットのホームページにも掲載したが、前回同様、こちらにも拙訳を掲載する。

Apache Lucene CoreおよびApache Solrユーザーの皆様こんにちは

オラクルは10月19日にJava 7u1 [1]をリリースしました。リリースノートおよびLuceneコミッターによるテスト結果から、7月28日に報告されたすべての不具合は本リリースにより改修されたことを確認しました。したがいまして、Porter StemmerはSIGSEGVによるクラッシュを発生させなくなりました。また、インデックス破壊も検出されませんので、Lucene CoreおよびSolrをJava 7u1上で安全に実行可能です。

同日、オラクルはJava 6u29[2]もリリースしました。Java 6において-XX:+AggressiveOptsまたは-XX:+OptimizeStringConcatのJVMスイッチを使用した際に同じ不具合起こしていたものですが、こちらも改修されました。もちろん、-XX:+AggressiveOptsのような"experimental"なJVMオプションを本番環境で使うべきではありませんけれども!私たちは、すべての人にこの最新バージョン6u29にアップグレードすることをお奨めいたします。

なお、Java 7にアップグレードする際は、インデックスを再作成するようにお願いします。Java 7でリリースされるユニコードのバージョンが変わるため、トークナイズの振る舞いが異なるためです(小文字など)。詳しくは各リリースパッケージのJRE_VERSION_MIGRATION.txtファイルを参照してください!

Apache Lucene/Solr コミッターを代表して、
Uwe Schindler




Solr 3.4なのにSolr 3.5の新機能までわかってしまう、最新情報満載のロンウイットのSolrトレーニング・・・Solr 3.4 11月 トレーニング受講者募集まもなく締め切り!

| 関口宏司 | 不具合関連 | 06:29 | comments(0) | trackbacks(0) |
BooleanQueryの不具合修正(2.9.1)
BooleanQueryで検索にヒットするはずのドキュメントが漏れる不具合が先日リリースされたばかりの2.9.0で発覚した。同じテストコードは2.4.1では出ないので、2.9.0で新たに入り込んだバグである。すでに修正され、2.9.1に含まれる。2.9.1にはFastVectorHighlighterの修正も含まれる。

BooleanQueryの不具合
https://issues.apache.org/jira/browse/LUCENE-1974

FastVectorHighlighterの不具合
https://issues.apache.org/jira/browse/LUCENE-1953

Solr 1.4はRCを現在準備中だが、Lucene 2.9.1を取り込む予定である。
| 関口宏司 | 不具合関連 | 10:10 | comments(0) | trackbacks(0) |
Document.getFields()で返されるフィールドの順番の不具合の修正(2.9)
Lucene 2.3まではDocumentにadd()した(名前の異なる)Fieldの順番は、IndexReader/IndexSearcherで取得したDocumentに対してfields()/getFields()を実行して取得したときにも順番が保たれていた。ところが、LUCENE-1301の機能改善の時にこのルールが破られてしまった。現在、Lucene 2.9でこれを元に戻そうとしている:

https://issues.apache.org/jira/browse/LUCENE-1727

したがって、狭間のLucene 2.4ではDocumentに対してfields()/getFields()を実行して取得したFieldのリストは保存時の順番とは異なってしまう不具合が残ったままである。

なお、マルチバリュー(multi valued;Documentに対して同じフィールド名で2つ以上のフィールドをadd()すること)の順序はいずれのバージョンでも保たれている。
| 関口宏司 | 不具合関連 | 09:29 | comments(0) | trackbacks(0) |
日本語フィールド名での不具合(2.4)
Lucene 2.3で作成したインデックスをLucene 2.4にアップグレード(Luceneライブラリを2.3から2.4にアップグレードし、2.3で作成したインデックスを2.4で更新すればインデックスは2.4フォーマットに自動的に変換される)したときに、もしフィールド名に日本語などnon-ASCIIキャラクタを用いていると、"read past EOF"例外に出会う可能性がある不具合が報告されている。例外にならなくても正しいフィールド名が返らない可能性がある。

この不具合はLucene 2.9で修正される予定である:

https://issues.apache.org/jira/browse/LUCENE-1623

| 関口宏司 | 不具合関連 | 09:20 | comments(0) | trackbacks(0) |
Lucene 2.4にアップグレードしたアプリケーションの注意点
Lucene 2.3.1以前のバージョンを使用していたアプリケーションが、Lucene 2.4にアップグレードした際、実行時の動作が異なってしまう可能性があることが判明し、メーリングリストで注意喚起されていたので、ここで紹介しておこう。


  1. QueryParserを拡張し、addClause()やgetBooleanQuery()をオーバーライドしていたアプリケーションは、(従来のVectorではなく)List引数を使用する新しいメソッドを使わなければ、フレームワークから呼ばれなくなってしまう。addClause()やgetBooleanQuery()はList引数を使用する新しいメソッドを使うように書き直す必要がある。

  2. DocumentクラスのgetFieldables(), getFields(), getValues()およびgetBinaryValues()を使っているアプリケーションは、これまで戻り値のnullチェックをしているところを.size()の長さ0チェックに変更する必要がある。


| 関口宏司 | 不具合関連 | 13:11 | comments(0) | trackbacks(0) |
Java 1.6.0_10でも直っていないという報告
Java 1.6.0_10で改修されたと見られていた現象がいまだ発生するという報告があった:

https://issues.apache.org/jira/browse/LUCENE-1342

すでにSunに報告済みでAcceptされているとのこと。非常にまれにしか発生せず、再現が難しいバグのようである。
| 関口宏司 | 不具合関連 | 08:31 | comments(0) | trackbacks(0) |
HotSpot Compilerのバグ、Java 1.6.0_10で改修予定
先日お知らせしたJava 1.6.0_04以上で発生する不具合だが、OpenJDK上ですでに改修されており、Java 1.6.0_10に反映されるようだ。
| 関口宏司 | 不具合関連 | 11:18 | comments(0) | trackbacks(0) |
Java 1.6.0_04以上で発生するエラー
さて、先日の週末はパソコンの復旧でつぶれた私だが、容量アップしたハードディスク(60GBから120GB)にいろいろソフトをインストールして現在は復活している。インストールしたソフトは特に理由がなければそのときの最新バージョンを入れた。Javaは1.6.0_07に上がったので、LUCENE-1282で騒がれた不具合が再現するか試してみた。

この不具合はJavaのHotSpot Compilerのものとみられており、SunのBug Databaseにファイルされている:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6707044

上記URLには再現させるための簡単なプログラムが掲載されている。私の環境(Windows Vista)で実行してみると、確かに再現した(起こるはずのないRuntimeExceptionが発生する):



$ java -server Crash
Exception in thread "main" java.lang.RuntimeException: BUG: checkAbort is always null: r=2 of 3; docNum=1
at Crash.crash(Crash.java:21)
at Crash.main(Crash.java:6)



ただし、上記URLに掲載されているプログラムそのままでは私の環境では起こらず、LUCENE-1282にあるとおり、docNumを1000000に、jを300000に変更すると発生した。

上記バグは当初はSunによりプライオリティがLowでファイルされていたが、現在は88票もの投票を受け、プライオリティがHighに変更されている。

LUCENE-1282
https://issues.apache.org/jira/browse/LUCENE-1282
| 関口宏司 | 不具合関連 | 07:26 | comments(1) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
   1234
567891011
12131415161718
19202122232425
262728293031 
<< August 2018 >>
+ 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