@Override protected BooleanClause doGetFacetClause() { SearchContext searchContext = getSearchContext(); FacetConfiguration facetConfiguration = getFacetConfiguration(); JSONObject dataJSONObject = facetConfiguration.getData(); String[] values = null; if (isStatic() && dataJSONObject.has("values")) { JSONArray valuesJSONArray = dataJSONObject.getJSONArray("values"); values = new String[valuesJSONArray.length()]; for (int i = 0; i < valuesJSONArray.length(); i++) { values[i] = valuesJSONArray.getString(i); } } String[] valuesParam = StringUtil.split(GetterUtil.getString(searchContext.getAttribute(getFieldName()))); if (!isStatic() && (valuesParam != null) && (valuesParam.length > 0)) { values = valuesParam; } if ((values == null) || (values.length == 0)) { return null; } BooleanQuery facetQuery = BooleanQueryFactoryUtil.create(searchContext); for (String value : values) { FacetValueValidator facetValueValidator = getFacetValueValidator(); if ((searchContext.getUserId() > 0) && !facetValueValidator.check(searchContext, value)) { continue; } TermQuery termQuery = TermQueryFactoryUtil.create(searchContext, getFieldName(), value); try { facetQuery.add(termQuery, BooleanClauseOccur.SHOULD); } catch (ParseException pe) { _log.error(pe, pe); } } if (!facetQuery.hasClauses()) { return null; } return BooleanClauseFactoryUtil.create( searchContext, facetQuery, BooleanClauseOccur.MUST.getName()); }
@Override public FacetConfiguration getDefaultConfiguration() { FacetConfiguration facetConfiguration = new FacetConfiguration(); facetConfiguration.setClassName(getFacetClassName()); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("frequencyThreshold", 1); jsonObject.put("maxTerms", 10); jsonObject.put("showAssetCount", true); facetConfiguration.setDataJSONObject(jsonObject); facetConfiguration.setFieldName(getFieldName()); facetConfiguration.setLabel(getLabel()); facetConfiguration.setOrder(getOrder()); facetConfiguration.setStatic(false); facetConfiguration.setWeight(1.2); return facetConfiguration; }