【郑州校区】SolrQuery实现高亮显示
[AppleScript] 纯文本查看 复制代码 @Test
public void testHighLightingQuery() throws SolrServerException, IOException{
// 初始化solrj服务
HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/core2");
// 设置查询条件
SolrQuery query = new SolrQuery("title:iphone");
// 设置前置标签
query.setHighlightSimplePre("<em>");
// 设置后置标签
query.setHighlightSimplePost("</em>");
// 添加高亮字段
query.addHighlightField("title");
// 执行查询
QueryResponse queryResponse = server.query(query);
// 处理返回结果
List<Item> items = queryResponse.getBeans(Item.class);
// 外层的Map,key:id,value:id以外的其他高亮字段,可能有多个,也是一个Map
// 内层的Map,key:高亮字段的名称,value:字段的内容,集合
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
// 遍历map,获取结果
/*Set<String> ids = highlighting.keySet();
for (String id : ids) {
System.out.println("id: " + id);;
// 获取高亮字段的集合
Map<String, List<String>> map = highlighting.get(id);
// 获取高亮字段
System.out.println(map.get("title").get(0));
// 因为price不是高亮字段,所以打印出的内容为null
System.out.println(map.get("price"));
}*/
for (Item item : items) {
System.out.println("id: " + item.getId());
// 根据item的id获取对应的高亮字段集合:Map,根据字段名称title获取对应的高亮内容集合:List,title只有一条数据,所以获取list集合中的第0条数据
System.out.println(highlighting.get(item.getId()).get("title").get(0));
System.out.println("price: " + item.getPrice());
}
}
传智播客·黑马程序员郑州校区地址 河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
|