- 什么是 SolrJ
solrJ 是访问 Solr 服务的 JAVA 客户端,提供索引和搜索的请求方法,SolrJ 通常嵌入在业务系统中,通过 solrJ 的 API 接口操作 Solr 服务。
- 使用solrj进行索引的添加
-
- 每个索引的添加必须要ID
- 添加key值要和schema.xml文件内的field域保持一致
- 添加数据后一定要提交数据,不然是不存在数据的
- 连接Solr的对象需要连接到项目名
- 每个document是一组Json数据对象
-
@Test
public void test1() throws SolrServerException, IOException {
//1.常见Solr服务对象
SolrServer server = new HttpSolrServer("http://192.168.177.128:8080/solr");
//2.创建文档对象
SolrInputDocument document = new SolrInputDocument();
//3.创建索引值
document.addField("id", "old");
document.addField("item_title", "4G手机");
document.addField("item_sell_point", "4G手机太好用");
document.addField("item_price", 9000);
//4.添加索引值到服务对象
server.add(document);
//5.提交数据到solr服务上
server.commit();
}

- 删除
- 删除支持两种删除方式
-
- 1.根据ID
- 2.执行查询删除
-
- 查询删除的格式:查询的域:值
-
-
@Test
public void test2() throws SolrServerException, IOException {
SolrServer server = new HttpSolrServer("http://192.168.177.128:8080/solr");
//1.根据ID进行删除
server.deleteById("test");
//2.根据查询进行删除格式为:item_title:4G手机,同样支持通配
server.deleteByQuery("*:*");
server.commit();
}
- 查询
- 使用到的对象
-
-
- 1.SolrQuery查询对象
- 1.setQuery():设置查询的关键字
- 2.set():设置查询的域
- 3.setStart():设置开始
- 4.setRows():设置结束
- 2.QueryResponse:响应结果集
- 1.getNumFound():返回查询到的数量
- 2.getResults();返回封装的list集合
- 3.SolrDocumentList:结果集合
- 1.get():获取指定域的值
- 1.SolrQuery查询对象
-
-
/**
* 查询
* @throws SolrServerException
*/
@Test
public void test3() throws SolrServerException {
SolrServer server = new HttpSolrServer("http://192.168.177.128:8080/solr");
//1.创建搜索对象
SolrQuery query = new SolrQuery();
//2.设置查询的关键字
query.setQuery("4G手机");
//3.设置查询的域从默认的域中进行数据的搜索
query.set("df", "item_keywords");
//4.设置分页
query.setStart(0);
query.setRows(10);
//5.执行查询QueryResponse:封装了结果集需要获取结果集
QueryResponse list = server.query(query);
//6.获取结果集
SolrDocumentList results = list.getResults();
//7.返回查询的个数
System.out.println(results.getNumFound());
for (SolrDocument var : results) {
System.out.println(var.get("item_title"));
System.out.println(var.get("item_sell_point"));
}
}
}