原文:https://cwiki.apache.org/confluence/display/solr/Using+SolrJ
- 启动Solr
./solr start -e techproducts
- 在maven工程里添加依赖包
<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.3.0</version>
</dependency>
- 新建Solr客户端
// 单节点
String urlString = "http://localhost:8983/solr/techproducts";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
// 集群
String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr";
SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();
- 新建索引文档
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "Gouda cheese wheel");
document.addField("price", "49.99");
UpdateResponse response = solr.add(document);
solr.commit();
- 搜索数据
// 您还可以在查询对象上设置任意参数。
// 下面的前两个代码行彼此相等,第三个代表如何使用任意参数q来设置查询字符串:
// 官方给出的示例代码,没有查询到结果
query.set("fl", "category,title,price");
query.setFields("category", "title", "price");
query.set("q", "category:books");
// 有结果的代码
SolrQuery query = new SolrQuery();
query.set("q", "name:Gouda cheese wheel");
QueryResponse response = solr.query(query);
SolrDocumentList list = response.getResults();
- 补充说明
返回的结果需要从Map里获取,不太方便,如果返回的是JSON格式,可以利用fastjson直接转换成java对象。