マルチコアをセットアップしたり、サーブレットコンテナを再起動したりせずに、 Solr構成をリロードすることは可能ですか?
管理者の分析タブでいくつかの<analyzer>チェーンを微調整し、<requestHandler>のパラメーターを微調整したいのですが、schema.xmlまたはsolrconfig.xmlに小さな変更を加えるたびにサーブレットコンテナーを再起動する必要があります。苦痛と時間がかかります。
SOLRには常にコアがあります。デフォルトでは、SOLRインスタンスはcollection1という名前のコアを作成します。単一のコアがあり、実行時にリロードする方法がわからない場合は、これを使用できます。
http://localhost:8080/solr/admin/cores?action=RELOAD&core=collection1
私が知る限り、オンラインでのリロードにはマルチコア構成が必要ですが、それほど難しくはありません。
これsolr.xml
をsolrホームディレクトリに入れます
<solr persistent="false" sharedLib="lib">
<cores adminPath="/admin/cores" defaultCoreName="core0">
<core name="core0" instanceDir="." />
</cores>
</solr>
サーブレットコンテナを再起動します。
次のようなURLをヒットして、構成を再読み込みします。
http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0
conf
残りの摩擦を取り除くために、ディレクトリ内で次のスクリプトを実行することにより、構成を自動的に再ロードするように設定できます。
get_on_fsevent.rb "http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0"
get_on_fsevent.rb:
#!/usr/bin/env ruby
require 'rubygems'
require 'rb-fsevent'
require 'net/http'
require 'uri'
uri = URI.parse(ARGV.first)
fsevent = FSEvent.new
fsevent.watch Dir.pwd do |directories|
puts "Detected change. Requesting #{ARGV.first}"
puts Net::HTTP.get_response(uri)
end
fsevent.run