##Spring-Data-Solr ⑵

1.设置高亮属性 设置高亮字段 设置高亮标签

  //高亮设置初始化
    SimpleHighlightQuery query = new SimpleHighlightQuery();
    HighlightOptions highlightOptions = new HighlightOptions().addField("item_title");//设置高亮域
    highlightOptions.setSimplePrefix("<em style='color:red'>");//设置前缀
    highlightOptions.setSimplePostfix("</em>");//设置后缀
    query.setHighlightOptions(highlightOptions);//查询条件中设置高亮选项

2.通过高亮页入口获得所有的高亮字段(此处代码嵌套层级较深,debug一步步看容易理解)

  HighlightPage<TbItem> tbItems = solrTemplate.queryForHighlightPage(query, TbItem.class);
  List<HighlightEntry<TbItem>> highlighted = tbItems.getHighlighted();//高亮入口集合
  for (HighlightEntry<TbItem> highlightEntry : highlighted) {
    TbItem item = highlightEntry.getEntity();//获取原实体
    if (highlightEntry.getHighlights().size() > 0 && highlightEntry.getHighlights().get(0).getSnipplets().size() > 0) {
        item.setTitle(highlightEntry.getHighlights().get(0).getSnipplets().get(0));//替换原有集合的字段信息,设置上高亮条件(即<em style='color:red'> </em>)
     }
}

3.过滤查询

 if (!"".equals(searchMap.get("category"))) {
            SimpleFilterQuery simpleFilterQuery = new SimpleFilterQuery();
            Criteria filtercriteria = new Criteria("item_category").is(searchMap.get("category"));
            simpleFilterQuery.addCriteria(filtercriteria);
            query.addFilterQuery(simpleFilterQuery);
        }
  根据条件的多少编写过滤查询代码,格式一样

价格过滤
 	String[] price = ((String) searchMap.get("price")).split("-");
    //价格高于设定值
    Criteria filterCriteria=new Criteria("item_price").greaterThanEqual(price[0]);
    //价格低于设定值
    Criteria filterCriteria=new Criteria("item_price").lessThanEqual(price[1]);

4.分页

	query.setOffset((pageNo - 1) * pageSize);//设置开始查询的位置
	query.setRows(pageSize);//设置每页显示数据

5.排序

    String sortField = (String) searchMap.get("sortField");//排序字段
    String sort = (String) searchMap.get("sort");//排序方式
    if (sort != null && !"".equals(sort)) {
        if (sort.equals("ASC")) {
            //升序
            Sort sort1 = new Sort(Sort.Direction.ASC, "item_" + sortField);
            query.addSort(sort1);
        }
        if (sort.equals("DESC")) {
            //降序
            Sort sort1 = new Sort(Sort.Direction.DESC, "item_" + sortField);
            query.addSort(sort1);
        }

    }

6.springd-data-solr的实际使用
springd-data-solr是一款持久层框架,在实际使用中,使用步骤如下,具体可参考官方文档
⑴.创建dao接口实现 XXXXXRepository<TbItem,Integer>

public interface TbItemDao extends SolrCrudRepository<TbItem,Integer> {

List<TbItem> findByTitle(String title);
}

⑵.基于接口调用方法

    @Test //分页实现
public void test1(){
    Pageable pageable = new PageRequest(1,5);
    Page<TbItem> all = tbItemDao.findAll(pageable);
    System.out.println(all.getTotalElements());
}

⑶.springdata方法命名规范
spring-data-solr⑵

相关文章: