xajh32y 发表于 2017-12-19 18:10:42

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"));
  

  
}
  
}
页: [1]
查看完整版本: Solr第二讲