List of usage examples for org.apache.solr.handler.component ShardRequest PURPOSE_REFINE_FACETS
int PURPOSE_REFINE_FACETS
To view the source code for org.apache.solr.handler.component ShardRequest PURPOSE_REFINE_FACETS.
Click Source Link
From source file:org.alfresco.solr.component.RewriteFacetParametersComponent.java
License:Open Source License
/** * Update the facet fields to use Solr field names rather than ACS property names. * * @param fixed The updated params object. * @param params The original params object. * @param paramName The name of the mincount parameter to rewrite (e.g. "facet.mincount" or "facet.pivot.mincount"). * @param fieldMappings A list of mappings from Alfresco property names to Solr field names. * @param req The original request./*from w w w . jav a 2 s . c o m*/ * @return An array of the facet field names. */ private List<String> rewriteFacetFieldList(ModifiableSolrParams fixed, SolrParams params, String paramName, Map<String, String> fieldMappings, SolrQueryRequest req) { String shardPurpose = req.getParams().get(ShardParams.SHARDS_PURPOSE); boolean isRefinementRequest = (shardPurpose != null) ? (shardPurpose.equals(String.valueOf(ShardRequest.PURPOSE_REFINE_FACETS))) || (shardPurpose.equals(String.valueOf(ShardRequest.PURPOSE_REFINE_PIVOT_FACETS))) : false; String[] facetFieldsOrig = params.getParams(paramName); List<String> facetFieldList = new ArrayList<>(); if (facetFieldsOrig != null) { ArrayList<String> newFacetFields = new ArrayList<String>(); for (String facetFields : facetFieldsOrig) { StringBuilder commaSeparated = new StringBuilder(); StringBuilder mapping = new StringBuilder(); StringBuilder unmapped = new StringBuilder(); String[] fields = parseFacetField(facetFields); for (String field : fields) { String prefix = ""; field = field.trim(); if (field.endsWith("()")) { // skip facet functions continue; } if (field.startsWith("{!") && !(isRefinementRequest)) { int index = field.indexOf("}"); if ((index > 0) && (index < (field.length() - 1))) { prefix = field.substring(0, index + 1); field = field.substring(index + 1); } } boolean noMappingIsRequired = req.getSchema().getFieldOrNull(field) != null || isRefinementRequest; if (noMappingIsRequired) { if (commaSeparated.length() > 0) { commaSeparated.append(","); mapping.append(","); unmapped.append(","); } commaSeparated.append(prefix).append(field); mapping.append(field); unmapped.append(field); facetFieldList.add(field); } else { String mappedField = AlfrescoSolrDataModel.getInstance().mapProperty(field, FieldUse.FACET, req); if (commaSeparated.length() > 0) { commaSeparated.append(","); mapping.append(","); unmapped.append(","); } commaSeparated.append(prefix).append(mappedField); mapping.append(mappedField); unmapped.append(field); facetFieldList.add(mappedField); } } if (!facetFields.equals(commaSeparated.toString())) { fieldMappings.put(unmapped.toString(), mapping.toString()); } if (commaSeparated.length() > 0) { newFacetFields.add(commaSeparated.toString()); } } fixed.set(paramName, newFacetFields.toArray(new String[newFacetFields.size()])); } return facetFieldList; }