0

嗨,我正在为 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);
  }
}

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

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

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

据说已经过时了。。

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

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

4

2 回答 2

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

  • 另外,对于 Solr Cloud,您可以将 CloudSolrServer 与 Apache ZooKeeper 的 url 参数一起使用:
    SolrServer cloudSolrServer = new CloudSolrServer("htt p://localhost:2181");

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

于 2015-01-16T15:28:10.447 回答
1

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

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

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

于 2013-07-23T07:52:01.427 回答