我用jruby和solrj以一種基本的方式工作。有很多solr的依賴關係,我沒有時間來確定所有solr組件都需要哪些jar。因此,以下課程通過默認solr和lucene下載運行,要求所有jar ...效率不高。
下載Lucene 4.1,Solr 4.1,commons-fileupload-1.2.2.jar和jackson-4.0.6-jar-with-dependencies.jar。最後一個只適用於com.google.common.cache.CacheBuilder類。我在其他地方找不到它。
將它們放在solr-jars目錄中。將以下內容保存在.rb文件中並使用jruby運行。
require 'java'
module Solr
class SolrServer
include_package 'org.apache.solr.core'
include_package 'org.apache.solr.client.solrj'
include_package 'org.apache.solr.client.solrj.embedded'
include_package 'org.apache.lucene'
def initialize(jarpath, solr_home, core)
Dir["#{jarpath}/**/*.jar"].each { |f| puts f; require f;}
java.lang.System.setProperty('solr.solr.home',solr_home)
initializer = CoreContainer::Initializer.new
coreContainer = initializer.initialize__method()
@server = EmbeddedSolrServer.new(coreContainer,core)
end
def query(q)
solr_query = SolrQuery.new
solr_query.setQuery q
puts @server.query(solr_query)
end
end
end
solr = Solr::SolrServer.new('solr-jars','solr-jars/solr-4.1.0/example/solr','collection1')
solr.query("*:*")