関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
GC改善に役立つ新しいJVMパラメータ
GC問題改善に役立つJDK 1.6.0_24の新しいJVMパラメータに関するメールがSolrのメーリングリストに投稿されたので紹介しよう:

Helpful new JVM parameters

アプリケーションの規模
1300万件レコード、非分散検索、相当数のstoredフィールド
64GBのハードウェアメモリに22GBのヒープ領域、1.2GBのnewSize/maxNewSize、CMS/ParNew

利用しているSolrの機能
少なくとも1ダース以上のフィールドに対するソートと20〜30フィールドに対するファセット

遭遇した問題
プロモーションの失敗によるフルGCの頻発。大きなオブジェクトが生成され、OLD領域をフラグメントさせたようである。

問題の改善に役立った新JVMパラメータ

OLD領域にプロモートされるオブジェクトの数を大幅に削減し、フラグメントとCMSの回数と時間を減少させたパラメータ
  • -XX:+UseStringCache
  • -XX:+OptimizeStringConcat
  • -XX:+UseCompressedStrings

64ビットJVMにおける圧縮ポインタを利用し、new GC (ParNew)時間を削減したパラメータ
  • -XX:+UseCompressedOops

CMS GCが発動されるtenured領域の占有率。ドキュメント上は68%とあるが、われわれの見立てだと90%に近い感覚があり、これでは遅すぎる
  • -XX:CMSInitiatingOccupancyFraction=75

メジャーGCのRemarkフェイズをマルチスレッドで実行
  • -XX:+CMSParallelRemarkEnabled
| 関口宏司 | Lucene開発環境 | 09:59 | comments(1) | trackbacks(0) |
(メモ) ASF Public Network Status
ASF Public Network Status
| 関口宏司 | Lucene開発環境 | 10:44 | comments(0) | trackbacks(0) |
Lucene/SolrをEclipseのプロジェクトとしてオープンする(4.0)
Lucene/Solr 4.0以降をEclipseやIntelliJ IDEAのプロジェクトとしてオープンするには、次のようにする:

# Lucene/Solrのダウンロード
$ svn co http://svn.apache.org/repos/asf/lucene/dev/trunk

# Eclipseの環境をセットアップ
$ cd trunk
$ ant eclipse

# または、IntelliJ IDEAの環境をセットアップ
$ cd trunk
$ ant idea
| 関口宏司 | Lucene開発環境 | 13:27 | comments(0) | trackbacks(0) |
(メモ) Subversion: mergeを使った変更の取り消し
Solrの検索結果クラスタリングの分散検索対応を担当している:

https://issues.apache.org/jira/browse/SOLR-2282
https://issues.apache.org/jira/browse/SOLR-2296

これで現在はまっている。ローカルでは再現しないエラーが、hudson上のnightlyビルドで起きている。とりあえず、迷惑をかけられないので、SOLR-2296を一時的にrevertすることにした。これはそのときのオペレーションメモ:

[koji@MacBook COMMIT-2296]$ svn merge -r 1052416:1052415 .
--- Reverse-merging r1052416 into 'solr/contrib':
A    solr/contrib/clustering/lib/carrot2-core-3.4.0.jar
D    solr/contrib/clustering/lib/carrot2-core-3.4.2.jar
U    solr/contrib/clustering/src/test/java/org/apache/solr/handler/clustering/DistributedClusteringComponentTest.java
U    solr/contrib/clustering/src/main/java/org/apache/solr/handler/clustering/carrot2/LuceneLanguageModelFactory.java
--- Reverse-merging r1052416 into 'solr/CHANGES.txt':
U    solr/CHANGES.txt
[koji@MacBook COMMIT-2296]$ svn commit -m "SOLR-2296: still failing on hudson - reverted"
Sending        solr/CHANGES.txt
Adding  (bin)  solr/contrib/clustering/lib/carrot2-core-3.4.0.jar
Deleting       solr/contrib/clustering/lib/carrot2-core-3.4.2.jar
Sending        solr/contrib/clustering/src/main/java/org/apache/solr/handler/clustering/carrot2/LuceneLanguageModelFactory.java
Sending        solr/contrib/clustering/src/test/java/org/apache/solr/handler/clustering/DistributedClusteringComponentTest.java
Transmitting file data ...
Committed revision 1052436.


取り消したい前回のコミットリビジョンと、その一つ前のリビジョンをsvn mergeコマンドに指定している。このようにコミットを1つにまとめておくと、取り消すのも簡単である。
| 関口宏司 | Lucene開発環境 | 12:21 | comments(0) | trackbacks(0) |
(メモ)Subversionブランチの一部をマージ
今回のSolr 1.4.1リリースで、以下のファイルディスクリプタリークの修正をbranch-1.5-devからsvn mergeすることで入れた。あまりやらない操作なので、のちのちのためにメモを残しておく。



# 1. branch-1.4をチェックアウト
$ mkdir work
$ cd work
$ svn co https://svn.apache.org/repos/asf/lucene/solr/branches/branch-1.4

# 2. (MoreLikeThisHandler.javaを例にとる)ディレクトリを移動して変更履歴をチェック
$ cd src/java/org/apache/solr/handler
$ svn log MoreLikeThisHandler.java
------------------------------------------------------------------------
r829938 | gsingers | 2009-10-27 05:24:11 +0900 (火, 27 10 2009) | 1 line

Starting Solr 1.4 branch.
------------------------------------------------------------------------
r801768 | yonik | 2009-08-07 03:47:16 +0900 (金, 07  8 2009) | 1 line

SOLR-1344: MoreLikeThis handler can't handle numeric id
           :

# 3. branch-1.5-devの方もチェック
$ svn log https://svn.apache.org/repos/asf/lucene/solr/branches/branch-1.5-dev/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
------------------------------------------------------------------------
r926581 | yonik | 2010-03-23 23:10:49 +0900 (火, 23  3 2010) | 1 line

moving to merged lusolr trunk
------------------------------------------------------------------------
r906553 | markrmiller | 2010-02-05 01:26:38 +0900 (金, 05  2 2010) | 1 line

SOLR-1748, SOLR-1747, SOLR-1746, SOLR-1745, SOLR-1744: Streams and Readers retrieved from ContentStreams are not closed in various places, resulting in file descriptor leaks.
------------------------------------------------------------------------
r898152 | ryan | 2010-01-12 11:19:56 +0900 (火, 12  1 2010) | 1 line

SOLR-1602 -- step 1.  Adding new 'response' package and refactoring all response things to this package.  NOTE, this will break back-compatibility depricated versions of the moved 1.4 files are added back.
------------------------------------------------------------------------
r801768 | yonik | 2009-08-07 03:47:16 +0900 (金, 07  8 2009) | 1 line

SOLR-1344: MoreLikeThis handler can't handle numeric id
           :

# 4. 上記2と3の変更履歴を比べると、r801768までが同じでbranch-1.4はそれ以降ソースに変更がなく、
# branch-1.5-devはr898152でrequestパッケージにあったMoreLikeThisHandler.javaファイルがresponse
# パッケージが新設されてそちらに移動し、その後r906553で今回の目的の変更があったことがわかる。
# そこで、(パッケージの移動は避けなければいけないので)svn diffでr906553でのMoreLikeThisHandler.java
# ファイルへの変更箇所を確認する
$ svn diff -r906552:906553 https://svn.apache.org/repos/asf/lucene/solr/branches/branch-1.5-dev/src/java/org/apache/solr/handler/MoreLikeThisHandler.java

# 5. OKならsvn mergeでマージ(このとき、手順2でMoreLikeThisHandler.javaのあるディレクトリに
# 移動済みのこと)。上記4.のdiffをmergeに変えればよい。
$ svn merge -r906552:906553 https://svn.apache.org/repos/asf/lucene/solr/branches/branch-1.5-dev/src/java/org/apache/solr/handler/MoreLikeThisHandler.java

# 6. 以降、個別に必要なだけsvn mergeし、CHANGES.txtは手動で直し、ant testしてOKを確認してsvn commit
| 関口宏司 | Lucene開発環境 | 11:05 | comments(3) | trackbacks(0) |
Lucene+SolrをEclipseで開いたときにエラーになるときの対処法
solr/src/test/org/apache/solr/core/TestConfig.javaがgetTextContent()でエラーになるときは、プロジェクトのBuild PathのLibrariesからlucene/contrib/ant/lib/Tidy.jarを削除する。Tidy.jarにはorg.w3c.dom.*のクラスが含まれており、これが悪さをしてしまう。

ネタ元:
http://n3.nabble.com/Some-help-for-folks-trying-to-get-new-Solr-Lucene-up-in-Eclipse-td698753.html
| 関口宏司 | Lucene開発環境 | 00:11 | comments(0) | trackbacks(0) |
Git at Apache
今発売中のWEB+DB PRESS Vol.50にも掲載されているgitについて。ApacheプロジェクトはSubversionを使っているが、そのgitミラーが存在する:

http://git.apache.org/

使い方はこちら:

http://wiki.apache.org/general/GitAtApache


| 関口宏司 | Lucene開発環境 | 22:32 | comments(2) | trackbacks(0) |
パッケージごと単体テストをする(2.9)
Luceneの単体テストは、Luceneを展開したディレクトリで次のように実行する:


$ ant test

これだとLuceneの全単体テストが実行されてしまうので、次のようにテストケース名を指定する方法がある:

$ ant test -Dtestcase=テストケース名

しかしこの方法だと指定した単体テストが1つしか実行できないので、これはこれで不便であった。

LUCENE-1617の改善により、単体テストを実行するパッケージが指定できるようになった。たとえば、org.apache.lucene.searchパッケージをテストするには、次のように指定する:

$ ant test -Dtestpackage=search

こうすると、"search"をパッケージ名に含むパッケージ以下の全単体テストを実行するようになる。この指定方法では、org.apache.lucene.search.*の単体テストに加え、search以下のfunctionやpayloadsやspansパッケージも単体テストが実行されるようになる。search以下のこれらのパッケージを含めたくないときは、testpackageの代わりにtestpackagerootというプロパティを使い、次のように指定すればよい:

$ ant test -Dtestpackageroot=search
| 関口宏司 | Lucene開発環境 | 11:16 | comments(0) | trackbacks(0) |
過去バージョンの単体テストを実行するAntターゲット(2.9)
現在のLucene trunkではLucene 2.9の開発が行われているが、「過去バージョンの単体テスト」を実行するAntターゲット"test-tag"が追加された。

次のように実行すると、現在のtrunkのディレクトリの下にtags/lucene_2_4_0/というディレクトリが作成されてそこにLucene 2.4の単体テストコードがダウンロードされ、Lucene 2.9のライブラリを使ってLucene 2.4.0のテストが実行される:



$ ant -Dtag=lucene_2_4_0 test-tag


| 関口宏司 | Lucene開発環境 | 16:51 | comments(0) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 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