Apache SolrJ是官方提供的Java客户端库,用于与Solr服务器进行交互,包括索引文档、执行查询、管理核心(collection)等操作。以下是一个简单的示例,展示了如何使用SolrJ实现与Solr服务器的客户端操作:
1. 添加依赖
在使用SolrJ之前,需要将其添加到项目的依赖管理工具(如Maven或Gradle)中。以Maven为例,在pom.xml
文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>solr_version</version> <!-- 替换为实际使用的Solr版本 -->
</dependency>
</dependencies>
2. 创建SolrClient实例
首先,创建一个SolrClient
实例,它代表与Solr服务器的连接。这里使用HttpSolrClient
,适用于通过HTTP与Solr通信:
import org.apache.solr.client.solrj.impl.HttpSolrClient;
String solrUrl = "http://localhost:8983/solr/my_collection"; // 替换为实际的Solr URL和集合名
SolrClient solrClient = new HttpSolrClient.Builder(solrUrl).build();
3. 索引文档
创建一个代表文档的SolrInputDocument
对象,添加字段值,然后提交到Solr服务器进行索引:
import org.apache.solr.common.SolrInputDocument;
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "1"); // 文档ID
doc.addField("title", "My Book Title");
doc.addField("author", "John Doe");
doc.addField("price", 29.99);
solrClient.add(doc);
solrClient.commit(); // 提交更改,使其对查询可见
4. 执行查询
使用SolrQuery
对象构建查询参数,然后通过SolrClient
执行查询并获取结果:
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
SolrQuery query = new SolrQuery("title:book"); // 查询标题包含"book"的文档
query.setRows(10); // 设置返回的最大结果数
QueryResponse response = solrClient.query(query);
SolrDocumentList results = response.getResults();
for (SolrDocument result : results) {
System.out.println("ID: " + result.getFieldValue("id"));
System.out.println("Title: " + result.getFieldValue("title"));
System.out.println("Author: " + result.getFieldValue("author"));
System.out.println("Price: " + result.getFieldValue("price"));
}
5. 关闭SolrClient
使用完SolrClient
后,记得关闭它以释放资源:
solrClient.close();
6. 其他操作
除了索引和查询外,SolrJ还提供了对Solr核心(collection)的管理、分面查询、高亮显示、统计等功能的支持。具体使用时,请查阅SolrJ的官方文档或API文档,根据实际需求调用相应的方法。
以上代码示例展示了如何使用SolrJ与Solr服务器进行基本的交互。实际应用中,通常会将这些操作封装到服务层或DAO类中,以提供更面向业务的接口,并处理异常、重试、连接池管理等事宜。