spring data solr获取和替换高亮的数据

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;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值