1. 创建HighlightQuery对象
HighlightQuery是Query的实习类
// 创建query对象
HighlightQuery query = new SimpleHighlightQuery(new SimpleStringCriteria("*:*"));
// 配置高亮选项
HighlightOptions options = new HighlightOptions();
// 高亮域
options.addField("item_title");
// 前缀和后缀
options.setSimplePrefix("<span style=\"color:red;\">");
options.setSimplePostfix("</span>");
// 设置高亮设置
query.setHighlightOptions(options);
2. 分页操作
// 分页
query.setOffset(start);
query.setRows(pageSize);
3. 替换高亮部分的域
// 执行查询 高亮
HighlightPage<Item> highlightPage = solrTemplate.queryForHighlightPage(query, Item.class);
// 获取高亮数据和普通数据
List<HighlightEntry<Item>> highlighted = highlightPage.getHighlighted();
// 遍历多个item数据
for (HighlightEntry<Item> itemHighlightEntry : highlighted) {
Item item = itemHighlightEntry.getEntity();
// 获取高亮数据
List<HighlightEntry.Highlight> highlights = itemHighlightEntry.getHighlights();
if (highlights != null && highlights.size() > 0 && highlights.get(0).getSnipplets() != null
&& highlights.get(0).getSnipplets().size() > 0) {
//可能存在多个高亮域
HighlightEntry.Highlight highlight = highlights.get(0);
// 获取分片数据
List<String> snipplets = highlight.getSnipplets();
String data = snipplets.get(0);
//替换高亮数据
item.setTitle(data);
}
}
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("rows", highlightPage.getContent());
pageMap.put("total", highlightPage.getTotalElements());
return pageMap;