1. 程式人生 > >品優購_根據keywords查詢分類顯示

品優購_根據keywords查詢分類顯示

根據關鍵字查詢分類只能用分組查詢,此時前臺傳入一個Map searchMap 裡面封裝了keywords條件,然後利用solr的分組查詢功能,獲取裡面的分組資訊

//解釋:根據兩個條件1關鍵字 2分組欄位 將2個條件封裝到query中,呼叫template得到分組頁,通過分頁得到分頁的value名
public List<String> categoryList(Map searchMap){
    List<String> list = new ArrayList<>();
    //0 解析引數searchMap
    String keywords = (String) searchMap.get("keywords");
    //2 建立query
    Query query =new SimpleQuery();
    //4 設定關鍵字查詢
    Criteria criteria = new Criteria("item_keywords").is(keywords);
    query.addCriteria(criteria);
    //3 設定分組選項(通過category進行分組)
    GroupOptions groupOption =new GroupOptions().addGroupByField("item_category");
    query.setGroupOptions(groupOption);
    //1 通過模板獲取分組和關鍵字查詢,得到分組頁
    GroupPage<TbItem> page = solrTemplate.queryForGroupPage(query, TbItem.class);
    //5 根據solr欄位名得到分組結果集
    GroupResult<TbItem> groupResult = page.getGroupResult("item_category");
    //6 得到分組結果集的入口頁
    Page<GroupEntry<TbItem>> groupEntries = groupResult.getGroupEntries();
    //7 得到分組入口集合
    List<GroupEntry<TbItem>> content = groupEntries.getContent();
    //8 將分組結果的名稱分裝到結果集中
    for (GroupEntry<TbItem> entity : content) {
          list.add(entity.getGroupValue());
    }
    return list;
}