我无法从SolrJ连接到Tomcat上的Solr实例。我已经浏览了"http://wiki.apache.org/solr/Solrj"上显示的文档,但它相当过时-主要是因为它没有关于Solr内核的参考。我想知道是否有人可以告诉我最新的文档或建议如何连接SolrJ与Solr4.0或更高-虽然我的实例现在只运行1核。
这是我的连接字符串:"localhost:8080/solr-example/collection1/"。你知道solrj要加哪些罐子吗?这可能就是问题所在。例如,SolrJ wiki引用了一个名为commons-codec-1.3.jar的jar,它在solr 4.0 zip文件中找不到。
使用SolrJ从Java调用Solr
可以直接在URL中指定Core。
HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/my_core");
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery(q);
solrQuery.setStart(start);
solrQuery.setRows(rows);
QueryResponse response = server.query(solrQuery);
HttpSolrServer
可用于更多查询。
Solr Server和SolrJ之间的通信是通过HTTP使用自定义二进制格式进行的。你能在http://localhost:8080/solr
上浏览Solr Web Admin吗?根据您的安装,您可能需要调整端口(8080是Tomcat的默认值,jetty使用8983)。
另外,您是使用通用名称部署Solr还是包含版本?那么你的URL应该是http://localhost:8080/solr-4.2.1/my_core
这些是使用SolrJ所需的最小依赖项。如果您正在使用maven,请将这些添加到您的pom.xml中。
<dependency>
<artifactId>solr-solrj</artifactId>
<groupId>org.apache.solr</groupId>
<version>4.2.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
如果您不使用maven,则需要以下jar文件:
- solr-solrj-4.2.0
- zookeeper-3.4.5
- commons - io - 2.1
- httpclient-4.2.3
- httpcore-4.2.2
- commons -编码- 1.6
- httpmime-4.2.3
- wstx-asl-3.2.3
- slf4j-simple-1.5.6
- slf4j-api-1.7.2
- commons-logging-1.1.1