博客信息

solr高亮显示及复制域

发布时间:『 2019-05-11 11:16』  博客类别:索引框架  阅读(1058)

solr高亮显示

由于SpringData solr框架自身原因,先将上篇博客的bid改成id,不然无法高亮显示

service实现层代码如下

public HighlightPage<Blog> listPagerSolrHighlight(Blog blog, PageBean pageBean) {
        HighlightQuery query=new SimpleHighlightQuery();
        HighlightOptions highlightOptions=new HighlightOptions().addField("item_title").addField("id");//设置高亮的域
        highlightOptions.setSimplePrefix("<em style='color:red'>");//高亮前缀
        highlightOptions.setSimplePostfix("</em>");//高亮后缀
        query.setHighlightOptions(highlightOptions);//设置高亮选项

        query.setOffset(Long.valueOf(pageBean.getStartIndex()));//开始索引(默认0)
        query.setRows(pageBean.getRows());//每页记录数(默认10)

        //按照关键字查询
//        if(blog != null && StringUtils.isNotBlank(blog.getTitle())){
            Criteria criteria=new Criteria("item_title").is(blog.getTitle());
        criteria = criteria.contains(1+"");
            query.addCriteria(criteria);
//        }

        HighlightPage<Blog> page = solrTemplate.queryForHighlightPage("new_core",query, Blog.class);
        for(HighlightEntry<Blog> h: page.getHighlighted()){//循环高亮入口集合
            Blog item = h.getEntity();//获取原实体类
            if(h.getHighlights().size()>0 && h.getHighlights().get(0).getSnipplets().size()>0){
                item.setTitle(h.getHighlights().get(0).getSnipplets().get(0));//设置高亮的结果
            }
        }
        return page;
    }

controler层

小李飞刀_solr


复制域

手动添加复制域字段,或者在solr服务器上添加也可以,推荐界面上添加,这样无需重启solr服务

小李飞刀_solr

修改service层代码如下

小李飞刀_solr


结果如下

小李飞刀_solr


所遇问题

org.springframework.data.mapping.MappingException: Id property could not be found

小李飞刀_solr


Solr为解决Html攻击问题,会出现页面html代码原样输出的问题

这里将th:text改成th:utext





关键字:     索引服务       solr  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有