// 被本類調用
private Map searchList(Map searchMap) {
// 1.1關鍵字查詢
SimpleHighlightQuery highlightQuery = new SimpleHighlightQuery(
new Criteria("hyd_keywords").is(searchMap.get("keywords")));
highlightQuery.setHighlightOptions(new HighlightOptions().addField("hyd_title")
.setSimplePrefix("<em style='color:red'>").setSimplePostfix("</em>"));
// 1.2按分類篩選 相當having
if (!"".equals(searchMap.get("category"))) {
highlightQuery.addFilterQuery(new SimpleFilterQuery(new Criteria("hyd_category").is(searchMap.get("category"))));
}
// 1.3按品牌篩選 同上
if (!"".equals(searchMap.get("brand"))) {
highlightQuery.addFilterQuery(new SimpleFilterQuery(new Criteria("hyd_brand").is(searchMap.get("brand"))));
}
// 1.4過濾規格 同上
if (searchMap.get("spec") != null) {
Map<String, String> specMap = (Map) searchMap.get("spec");
for (String key : specMap.keySet()) {
highlightQuery.addFilterQuery(new SimpleFilterQuery(new Criteria("hyd_spec_" + key).is(specMap.get(key))));
}
}
/*
* 查詢 剛剛開始
*/
HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(highlightQuery, TbItem.class);
for (HighlightEntry<TbItem> highlightEntry : page.getHighlighted()) {
TbItem tbItem = highlightEntry.getEntity();
if (highlightEntry.getHighlights().size() > 0
&& highlightEntry.getHighlights().get(0).getSnipplets().size() > 0) {
tbItem.setTitle(highlightEntry.getHighlights().get(0).getSnipplets().get(0));// 設置高亮的結果
}
}
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("rowsHyd", page.getContent());
return hashMap;
}
addFilterQuery方法需要的接口參數

篩選查詢是執行原始查詢后應用的簡單solr查詢。
