Apache SolrJ 是 Solr 官方提供的 Java 客户端库,用于与 Solr 服务器进行交互,包括索引文档、执行搜索查询、管理核心(cores)等操作。以下是一些使用 SolrJ 操作 Solr 的基本步骤和示例代码:
**1. 添加依赖
在 Maven 项目中,将 SolrJ 依赖添加到 pom.xml
文件:
<dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>版本号</version> <!-- 替换成您需要的 SolrJ 版本 -->
</dependency>
</dependencies>
**2. 创建 SolrClient 实例
根据 Solr 服务器的部署方式,创建相应的 SolrClient 实例。这里以连接单机模式的 Solr 为例:
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
SolrClient solrClient = new HttpSolrClient.Builder("http://localhost:8983/solr/mycore").build();
**3. 索引文档
创建一个 SolrInputDocument
对象,添加字段和值,然后使用 SolrClient 的 add()
或 addBean()
方法将文档提交到 Solr:
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
SolrClient solrClient = ...; // 实例化 SolrClient
// 创建 SolrInputDocument
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "1");
doc.addField("title", "Example Product");
doc.addField("description", "A sample product for demonstration purposes.");
doc.addField("price", 19.99);
// 提交文档
solrClient.add(doc);
solrClient.commit(); // 不立即提交的话,可以调用 commit() 方法确保文档被索引
**4. 执行查询
构建一个 SolrQuery
对象,设置查询条件和参数,然后使用 SolrClient 的 query()
方法执行查询并获取结果:
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
SolrClient solrClient = ...; // 实例化 SolrClient
SolrQuery query = new SolrQuery();
query.setQuery("title:example"); // 设置查询条件
query.setRows(10); // 设置每页返回的最大文档数
// 执行查询并获取结果
QueryResponse response = solrClient.query(query);
SolrDocumentList results = response.getResults();
for (SolrDocument result : results) {
System.out.println(result.getFieldValue("id")); // 输出文档ID
System.out.println(result.getFieldValue("title")); // 输出标题
}
solrClient.close(); // 关闭 SolrClient,释放资源
**5. 其他操作
除了索引文档和执行查询外,SolrJ 还支持许多其他操作,如:
-
删除文档:使用
deleteById()
、deleteByQuery()
方法删除指定ID的文档或满足特定查询条件的文档。 -
更新文档:通常通过删除原有文档并重新添加新文档实现,因为 Solr 本身不直接支持字段级别的更新。
-
核心管理:创建、删除、重命名核心,以及获取核心状态等。
-
配置管理:读取、更新 Solr 核心的配置。
-
分面搜索、统计查询、高亮显示、分组等高级搜索功能。
-
事务支持(Solr 8.1+):对于需要原子性和一致性的批量操作,可以使用 SolrJ 的
SolrClient.beginRequest()
、commitRequest()
、rollbackRequest()
方法。
通过 SolrJ,您可以方便地在 Java 应用程序中集成 Solr,实现对索引数据的高效管理和搜索。根据具体需求,参考 SolrJ 的官方文档和 API 文档以了解更全面的功能和用法。记得在操作完成后关闭 SolrClient,以释放资源。