java中的solrj连接

时间:2013-07-23 07:31:20

标签: java solr jetty solrj

我正在为solrj工作几个示例程序,我无法确定我是否正确连接它...这是我的代码

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams;

import java.net.MalformedURLException;

public class SolrExample {
  public static void main(String[] args) throws MalformedURLException,    SolrServerException {
//SolrServer solr = new CommonsHttpSolrServer("localhost:8983/solr");
SolrServer server = new HttpSolrServer("localhost:8983/solr/");


ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/spellCheckCompRH");
params.set("q", "epod");
params.set("spellcheck", "on");
params.set("spellcheck.build", "true");

QueryResponse response = server.query(params);
System.out.println("response = " + response);
  }
}

上面代码的输出是: {时间= 219.0,SUB1 = {时间= 125.0,sub1.1 = {时间= 0.0}}}

另一方面,如果我使用这个:

     SolrServer solr = new CommonsHttpSolrServer("localhost:8983/solr");

据说是被剥夺了..

我很困惑,因为我可以通过localhost访问我的计算机中的solr管理员,但我不能参与我的程序..

非常感谢,如果有人可以提供帮助

2 个答案:

答案 0 :(得分:2)

  • 对于Solrj 4.x,您必须使用HttpSolrServer:
    SolrServer solrServer = new HttpSolrServer(“http://localhost:8983/solr”);
    或“http://localhost:8983/solr/solrCoreName

  • 奖励,对于Solr Cloud,您可以将CloudSolrServer与参数urma一起使用到Apache ZooKeeper:
    SolrServer cloudSolrServer = new CloudSolrServer(“htt p:// localhost:2181”);

查看Apache Solr wiki页面以获取更多信息:wiki.apache.org/solr/FrontPage

答案 1 :(得分:1)

您不应该在URL上指定协议:

SolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");

我做了简单的测试,如果我不这样做,我会收到错误。然而,我在我的项目中使用Solr 3.4 ...我没有得到“弃用”警告,根据文档确实建议在更高版本的solr(http://lucene.apache.org/solr/3_6_0/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.html)中使用“HttpSolrServer”。