Solr===>>查詢結果高亮顯示===>>程式碼僅將查詢到的第一個solr域中的第一個值高亮顯示
阿新 • • 發佈:2018-12-21
// 查詢結果高亮顯示
public Map<String, Object> searchHightLight(Map searchMap){
Map map=new HashMap();
HighlightQuery query = new SimpleHighlightQuery();
//===========設定高亮相關的選項=============
// 設定高亮的域
HighlightOptions highlightOptions = new HighlightOptions().addField("item_title");
// 設定高亮字首
highlightOptions. setSimplePrefix("<em style='color:red' >");
// 設定高亮字尾
highlightOptions.setSimplePostfix("</em>");
// 設定高亮選項到 query 物件中
query.setHighlightOptions(highlightOptions);
//=============按照關鍵字查詢==============
Criteria criteria = new Criteria("item_keywords").is(searchMap.get("item_keywords" ));
query.addCriteria(criteria);
// 查詢
HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class);
//高亮入口集合
List<HighlightEntry<TbItem>> highlighted = page.getHighlighted();
// 獲取高亮內容
for (HighlightEntry<TbItem> h : highlighted) {
TbItem item = h.getEntity();// 獲取原實體類
if (h.getHighlights().size() > 0 && h.getHighlights().get(0).getSnipplets().size() > 0) {
//將獲取的高亮內容設定回原本的 查詢結果(page.getContent() 等同於h.getEntity()的集合)
item.setTitle(h.getHighlights().get(0).getSnipplets().get(0));// 設定高亮的結果
}
}
map.put("rows",page.getContent());
return map;
}
注意 這個高亮查詢程式碼僅將查詢到的第一個solr域中的第一個值高亮顯示