戯言

つらつらと気づいたことを書いていきます。人狼とか。

るる


スポンサーサイト



tomcatの起動に時間がかかる


tomcatの起動に、数分かかるようになったのでcatalinaのログを見てみたところ、

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [213,276] milliseconds.

と、SecureRandom インスタンスを生成している箇所で、3分半くらいかかっていた。

これは、Javaのバグらしく、tomcatの起動オプションに、
-Djava.security.egd=file:/dev/./urandom
を加えることで解決しました。

デフォルトでは、/dev/random を使うけど、/dev/./urandomに変更することで回避できるみたい。

参考URL:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6202721

変更後は、tomcatの起動処理はすぐに終わるようになって、上記のログは出力されなくなりました。



solrの管理画面から複数のデータの登録や更新を行う



solrでは、updateコマンドを発行しなくとも、管理画面から登録や更新することもできます。

コアを選択後、Documentsのリンクを開きます。



1つのデータを登録するだけであれば、
Document Typeで「JSON」を選択し、
Document(s)に、

{"id":"change.me","title":"change.me"}

などと入力すれば、登録できます。

実は、「Document(s)」と複数データも行けるように見えますが、
Document Type 「JSON」では単一ドキュメントしか登録できません。
複数のデータをまとめて登録しようとして、

[
{"id":"change1.me","title":"change1.me"},
{"id":"change2.me","title":"change2.me"}
]

などと入力しても、エラーが発生します。

他にもいろいろ試してみましたが、できませんでした。


では、複数のデータを登録するにはどうするのでしょうか。
Document Type 「Solr Command (raws XML or JSON)」から、登録できることを確認しました。
Document(s)欄には、デフォルトでXMLの例文が表示されますが、(JSONで記述したいので)さくっと全て削除してしまって、

{
"add":{"doc":{"id":"change1.me","title":"change1.me"}},
"add":{"doc":{"id":"change2.me","title":"change2.me"}},
"commit":{}
}

とすると、登録(コミットも)できます。

どうやら、Document Type「JSON」の方は、入力したデータをもとに

{"add":{ "doc": (Document(s)欄に入力した値),
"commitWithin": (Commit Within欄に入力した値),
"overwrite": (overwrite欄に入力した値),
"boost": (Boost欄に入力した値)
}
}

のように補完しているんだと思います。

なので、複数のデータはDocument Type 「JSON」で登録できないのでしょう。たぶん。(ソースは見てない)