一:使用solrJ查询索引库
1、步骤:
(1)、创建一个SolrServer对象和服务端建立连接
(2)、创建一个SolrQuery对象
(3)、参考后台设置查询条件
(4)、执行查询,得到一个QueryResponse对象
(5)、包含查询结果的总记录数、结果列表和高亮结果
(6)、取查询结果并打印
2、代码
(1)、简单条件查询的代码
@Test
public void searchIndex() throws Exception {
// 1、创建一个SolrServer对象和服务端建立连接
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
// 2、创建一个SolrQuery对象
SolrQuery query = new SolrQuery();
// 3、参考后台设置查询条件
//query.setQuery("*:*");
query.set("q", "*:*");
// 4、执行查询,得到一个QueryResponse对象
QueryResponse response = solrServer.query(query);
// 5、包含查询结果的总记录数、结果列表和高亮结果。
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
// 6、取查询结果并打印
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("product_name"));
System.out.println(solrDocument.get("product_price"));
System.out.println(solrDocument.get("product_catalog_name"));
System.out.println(solrDocument.get("product_picture"));
}
}
(2)、复杂条件的查询代码
@Test
public void searchIndexFuza() throws Exception {
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
//创建查询对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("小黄人");
query.addFilterQuery("product_price:[0 TO 10]");
//参数1:要排序的域 参数2:排序方式
query.setSort("product_price", ORDER.asc);
query.setStart(0);
query.setRows(9);
query.set("df", "product_keywords");
//设置高亮
query.setHighlight(true);
query.addHighlightField("product_name");
query.setHighlightSimplePre("<em>");
query.setHighlightSimplePost("</em>");
//执行查询
QueryResponse queryResponse = solrServer.query(query);
//取查询结果
SolrDocumentList solrDocumentList = queryResponse.getResults();
//取高亮结果
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
System.out.println("总记录数:" + solrDocumentList.getNumFound());
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
//取高亮结果
String name = "";
List<String> list = highlighting.get(solrDocument.get("id")).get("product_name");
if (list != null && list.size() > 0) {
name = list.get(0);
} else {
name = (String) solrDocument.get("product_name");
}
System.out.println(name);
System.out.println(solrDocument.get("product_price"));
System.out.println(solrDocument.get("product_catalog_name"));
System.out.println(solrDocument.get("product_picture"));
}
}