spring-data-solr⑵

##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方法命名規範

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章