• 高亮显示小Demo


    public class ItemSearchImpl implements ItemSearchService {
        /**
         * 搜索
         *
         * @param paramMap
         * @return
         */
        @Autowired
        private SolrTemplate solrTemplate;
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public Map<String, Object> search(Map paramMap) {
            
            //获取关键字
            String keywords = (String) paramMap.get("keywords");
            //获取当前页
            Integer pageNo = Integer.parseInt(String.valueOf(paramMap.get("pageNo")));
            //每页查询多少条
              Integer pageSize = Integer.parseInt(String.valueOf(paramMap.get("pageSize")));
    
                //封装查询对象
            HighlightQuery query = new SimpleHighlightQuery();
            //查询的条件对象·
            Criteria criteria = new Criteria("item_keywords").is(keywords);
            //将查询条件放入对象
           query.addCriteria(criteria);
           //计算从第几页开始读
            if(pageNo==null || pageNo<=0){
                pageNo=1;
            }
            Integer start = (pageNo-1)*pageSize;
            //设置从第几页查询
            query.setOffset(start);
            //设置每页多少条
            query.setRows(pageSize);
            //创建高亮显示对象
            HighlightOptions highlightOptions = new HighlightOptions();
            //设置哪个域需要高亮
            highlightOptions.addField("item_title");
            //高亮的前缀
            highlightOptions.setSimplePrefix("<em style=" color=red ">");
            //高亮的后缀
            highlightOptions.setSimplePostfix("</em>");
            //将高亮加入到查询对象
            query.setHighlightOptions(highlightOptions);
            //查询并返回结果
            HighlightPage<TbItem> items = solrTemplate.queryForHighlightPage(query, TbItem.class);
            //获取带高亮的集合
            List<HighlightEntry<TbItem>> highlighted = items.getHighlighted();
            List<TbItem> itemList = new ArrayList<>();
            //遍历高亮集合
            for (HighlightEntry<TbItem> itemHighlightEntry: highlighted) {
                TbItem item = itemHighlightEntry.getEntity();
                List<HighlightEntry.Highlight> highlights = itemHighlightEntry.getHighlights();
    
                if(highlights!=null && highlights.size()>0){
                    //获取高亮的标题集合
                    List<String> highlightTitle = highlights.get(0).getSnipplets();
                    if(highlightTitle!=null&&highlightTitle.size()>0){
                        // 获取高亮的标题
                        String title = highlightTitle.get(0);
                        item.setTitle(title);
                    }
                }
                itemList.add(item);
            }
            Map<String,Object> resuleMap = new HashMap<>();
            //查询到的结果集
            resuleMap.put("rows",itemList);
            //总页数
            resuleMap.put("totalPage",items.getTotalPages());
            //总条数
            resuleMap.put("total",items.getTotalElements());
            return resuleMap;
    
        }
    }

  • 相关阅读:
    一个很好的国外的算法网站
    Windows 2008 R2 强制删除Cluster
    .net 4.5 新特性 async await 一般处理程序实例
    基于RSA的加密/解密示例C#代码
    解决WCF 调用方未由服务器进行身份验证或消息包含无效或过期的安全上下文令牌
    SQL Server查看所有表大小,所占空间
    关于Latch
    关闭SQL Server 数据库所有使用连接
    MysqliDb 库的一些使用简单技巧(php)
    Linux 常用命令
  • 原文地址:https://www.cnblogs.com/chen4j/p/11914054.html
Copyright © 2020-2023  润新知