我尝试使用solr 6.5.0来连接java。我已将以下.jar文件添加到库中:
commons-io-2.5
httpclient-4.4.1
httpcore-4.4.1
httpmine-4.4.1
jcl-over-slf4j-1.7.7
noggit-0.6
slf4j-api-1.7.7
stax2-api-3.1.4
woodstox-core-asl-4.4.1
zookeeper-3.4.6
solr-solrj-6.5.0
但是当我尝试使用以下代码连接solr时:
import org.apache.http.impl.bootstrap.HttpServer;
import org.apache.solr.client.solrj.SolrQuery;
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.SolrDocumentList;
public class SolrQuery {
public static void main(String[] args) throws SolrServerException {
HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/collection1");
SolrQuery query = new SolrQuery();
query.setQuery("*");
QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();
for (int i = 0; i < results.size(); ++i) {
System.out.println(results.get(i));
}
}
}
在编译之前,我在:
中出错了import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.SolrQuery;
HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/collection1");
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
我发现我需要导入一个.jar文件,该文件不包含在名为slf4j-simple-1.7.25
的/ dist库中,并且
HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/gettingstarted");
SolrQuery query = new SolrQuery();
需要改为
String urlString = "http://localhost:8983/solr/gettingstarted";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
之后它终于可以运行!!!
答案 1 :(得分:2)
您的问题中的代码段是为了旧版本的Solr而编写的。 5.0。您将找到许多针对旧Solr版本编写的源代码和示例,但在大多数情况下,您只需使用新的SolrServer
更改旧SolrClient
类(现在更正) )课。
两者都是您要使用的Solr实例的表示。
阅读Solr Documentation - Using SolrJ
我热烈建议您不要在课程中使用与现有课程相同的名称(在您的示例中,您的课程名为SolrQuery
)。
Solr查询的catch all字符串为*:*
,表示:搜索所有可用字段的所有匹配项。因此,将语句query.setQuery
更改为:
query.setQuery("*:*");
我认为您使用Solr客户端作为独立实例,因此,正如您已经知道的那样,实例SolrClient
的正确方法是:
String urlString = "http://localhost:8983/solr/gettingstarted";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
这是我建议迭代所有返回文档的更简单方法:
for (SolrDocument doc : response.getResults()) {
System.out.println(doc);
}
查看SolrDocument
类的文档,解释如何使用它并正确读取字段值。