@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());
}
}
SolrQuery實現高亮顯示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.