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