solr 连接中的问题 java
trouble in solr connect java
我尝试使用 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");
谁能帮我解决一下?
我发现我需要导入一个 .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();
之后它终于可以运行了!!!
你问题中的这段代码是为版本之前的旧版本 Solr 编写的。 5.0。您会发现许多为旧 Solr 版本编写的资源和示例,但在大多数情况下,您所要做的就是将旧的 SolrServer
class 更改为新的 SolrClient
(并且现在正确)class。
两者都是您要使用的 Solr 实例的表示。
阅读Solr Documentation - Using SolrJ
我强烈建议不要为您的 class 使用与现有 class 相同的名称(在您的示例中,您的 class 被命名为 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
class 的文档,了解如何使用它并正确读取字段值。
我尝试使用 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");
谁能帮我解决一下?
我发现我需要导入一个 .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();
之后它终于可以运行了!!!
你问题中的这段代码是为版本之前的旧版本 Solr 编写的。 5.0。您会发现许多为旧 Solr 版本编写的资源和示例,但在大多数情况下,您所要做的就是将旧的 SolrServer
class 更改为新的 SolrClient
(并且现在正确)class。
两者都是您要使用的 Solr 实例的表示。
阅读Solr Documentation - Using SolrJ
我强烈建议不要为您的 class 使用与现有 class 相同的名称(在您的示例中,您的 class 被命名为 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
class 的文档,了解如何使用它并正确读取字段值。