1、内容如下:
- 高亮
- Solr分组
- 综合查询(区间、条件、分类等)
2、查询列表、Solr分组、高亮显示
private Map searchList(Map searchMap){Map map=new HashMap();HighlightQuery query=new SimpleHighlightQuery();HighlightOptions highlightOptions=new HighlightOptions();highlightOptions.addField("item_title");highlightOptions.setSimplePrefix("");highlightOptions.setSimplePostfix("");query.setHighlightOptions(highlightOptions);Criteria criteria=new Criteria("item_keywords").is(searchMap.get("keywords"));query.addCriteria(criteria); HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class); List<HighlightEntry<TbItem>> highlighted = page.getHighlighted(); for(HighlightEntry<TbItem> h: highlighted){ if(h.getHighlights().size()>0 && h.getHighlights().get(0).getSnipplets().size()>0){ TbItem item = h.getEntity(); item.setTitle(h.getHighlights().get(0).getSnipplets().get(0)); } } map.put("rows",page.getContent());}}return map;}private List searchCategoryList(Map searchMap){List<String> list=new ArrayList();Query query=new SimpleQuery();Criteria criteria=new Criteria("item_keywords").is(searchMap.get("keywords"));query.addCriteria(criteria);GroupOptions groupOptions=new GroupOptions().addGroupByField("item_category");query.setGroupOptions(groupOptions);GroupPage<TbItem> page = solrTemplate.queryForGroupPage(query, TbItem.class);GroupResult<TbItem> groupResult = page.getGroupResult("item_category");Page<GroupEntry<TbItem>> groupEntries = groupResult.getGroupEntries();List<GroupEntry<TbItem>> content = groupEntries.getContent();for(GroupEntry<TbItem> entry:content){list.add(entry.getGroupValue());}return list;}
3、综合查询
private Map searchList(Map searchMap){ Map map=new HashMap(); HighlightQuery query=new SimpleHighlightQuery(); HighlightOptions highlightOptions=new HighlightOptions(); highlightOptions.addField("item_title"); highlightOptions.setSimplePrefix(""); highlightOptions.setSimplePostfix(""); query.setHighlightOptions(highlightOptions); Criteria criteria=new Criteria("item_keywords").is(searchMap.get("keywords")); query.addCriteria(criteria); if(!"".equals(searchMap.get("category"))){ Criteria filterCriteria=new Criteria("item_category").is(searchMap.get("category")); FilterQuery filterQuery=new SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery); } if(!"".equals(searchMap.get("price"))){ String[] price = ((String) searchMap.get("price")).split("-"); if(!price[0].equals("0")){ Criteria filterCriteria=new Criteria("item_price").greaterThanEqual(price[0]); FilterQuery filterQuery=new SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery); } if(!price[1].equals("*")){ Criteria filterCriteria=new Criteria("item_price").lessThanEqual(price[1]); FilterQuery filterQuery=new SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery); } } Integer pageNo= (Integer) searchMap.get("pageNo"); if(pageNo==null){ pageNo=1; } Integer pageSize=(Integer) searchMap.get("pageSize"); if(pageSize==null){ pageSize=20; } query.setOffset((pageNo-1)*pageSize); query.setRows(pageSize); String sortValue= (String) searchMap.get("sort"); String sortField= (String) searchMap.get("sortField"); if(sortValue!=null && !sortValue.equals("")){ if(sortValue.equals("ASC")){ Sort sort=new Sort(Sort.Direction.ASC, "item_"+sortField); query.addSort(sort); } if(sortValue.equals("DESC")){ Sort sort=new Sort(Sort.Direction.DESC, "item_"+sortField); query.addSort(sort); } } HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class); List<HighlightEntry<TbItem>> highlighted = page.getHighlighted(); for(HighlightEntry<TbItem> h: highlighted){ if(h.getHighlights().size()>0 && h.getHighlights().get(0).getSnipplets().size()>0){ TbItem item = h.getEntity(); item.setTitle(h.getHighlights().get(0).getSnipplets().get(0)); } } map.put("rows",page.getContent()); map.put("totalPages", page.getTotalPages()); map.put("total", page.getTotalElements()); return map; }
老江饲料商城