我正在为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管理员,但我不能参与我的程序..
非常感谢,如果有人可以提供帮助答案 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”。