SpringDataSolr 過濾(或者叫篩選)查詢


// 被本類調用
	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查詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM