您的位置:首页 > 其它

Solr第二讲——SolrJ客户端的使用与案例

2017-09-08 14:12 369 查看

一、Solrj的使用

  1.什么是Solrj

  solrj是访问Solr服务的java客户端(就像通过jedis操作redis一样),提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:

  

@Test
public void queryIndex2() throws Exception {
// 创建HttpSolrServer对象,通过它和Solr服务器建立连接。
// 参数:solr服务器的访问地址
HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/");

// 创建SolrQuery对象
SolrQuery query = new SolrQuery();

// 设置查询条件
query.setQuery("钻石");
// 设置过滤条件
query.setFilterQueries("product_catalog_name:幽默杂货");
// 设置排序
query.setSort("product_price", ORDER.desc);
// 设置分页信息
query.setStart(0);
query.setRows(10);

// 设置显得的域的列表
query.setFields("id", "product_name", "product_price",
"product_catalog_name", "product_picture");

// 设置默认搜索域
query.set("df", "product_name");

// 设置高亮
query.setHighlight(true);
query.addHighlightField("product_name");
query.setHighlightSimplePre("<em>");
query.setHighlightSimplePost("</em>");

// 调用server的查询方法,查询索引库
QueryResponse response = server.query(query);

// 查询结果
SolrDocumentList results = response.getResults();

// 查询结果总数
long cnt = results.getNumFound();
System.out.println("查询结果总数:" + cnt);

for (SolrDocument solrDocument : results) {
System.out.println(solrDocument.get("id"));

String productName = (String) solrDocument.get("product_name");

//获取高亮列表
Map<String, Map<String, List<String>>> highlighting = response
.getHighlighting();
//获得本文档的高亮信息
List<String> list = highlighting.get(solrDocument.get("id")).get(
"product_name");
//如果有高亮,则把商品名称赋值为有高亮的那个名称
if (list != null) {
productName = list.get(0);
}

System.out.println(productName);
System.out.println(solrDocument.get("product_price"));
System.out.println(solrDocument.get("product_catalog_name"));
System.out.println(solrDocument.get("product_picture"));

}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: