List of usage examples for org.apache.solr.client.solrj.response RangeFacet getName
public String getName()
From source file:com.frank.search.solr.core.ResultHelper.java
License:Apache License
/** * @param query/*from w w w . java 2s . c om*/ * @param response * @return * @since 1.5 */ static Map<Field, Page<FacetFieldEntry>> convertFacetQueryResponseToRangeFacetPageMap(FacetQuery query, QueryResponse response) { Assert.notNull(query, "Cannot convert response for 'null', query"); if (!hasFacets(query, response) || isEmpty(response.getFacetRanges())) { return Collections.emptyMap(); } Map<Field, Page<FacetFieldEntry>> facetResult = new HashMap<Field, Page<FacetFieldEntry>>(); Pageable pageable = query.getFacetOptions().getPageable(); int initalPageSize = pageable.getPageSize(); for (RangeFacet<?, ?> rangeFacet : response.getFacetRanges()) { if (rangeFacet == null || !StringUtils.hasText(rangeFacet.getName())) { continue; } Field field = new SimpleField(rangeFacet.getName()); List<FacetFieldEntry> entries; long total; if (isNotEmpty(rangeFacet.getCounts())) { entries = new ArrayList<FacetFieldEntry>(initalPageSize); for (RangeFacet.Count count : rangeFacet.getCounts()) { entries.add(new SimpleFacetFieldEntry(field, count.getValue(), count.getCount())); } total = rangeFacet.getCounts().size(); } else { entries = Collections.<FacetFieldEntry>emptyList(); total = 0; } facetResult.put(field, new SolrResultPage<FacetFieldEntry>(entries, pageable, total, null)); } return facetResult; }
From source file:com.nridge.ds.solr.SolrResponseBuilder.java
License:Open Source License
@SuppressWarnings({ "unchecked", "rawtypes" })
private void populateFacet(DataTable aTable, RangeFacet aRangeFacet) {
DataField schemaField;//w ww .j av a 2 s. co m
Logger appLogger = mAppMgr.getLogger(this, "populateFacet");
appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER);
DataBag resultBag = mBag;
String fieldName = aRangeFacet.getName();
schemaField = resultBag.getFieldByName(fieldName);
Field.Type fieldType = facetRangeToFieldType(aRangeFacet, schemaField);
if (Field.isDateOrTime(fieldType)) {
RangeFacet<Date, Date> facetRangeDate = (RangeFacet<Date, Date>) aRangeFacet;
aTable.newRow();
aTable.setValueByName("field_name", fieldName);
if ((schemaField != null) && (StringUtils.isNotEmpty(schemaField.getTitle())))
aTable.setValueByName("field_title", schemaField.getTitle());
else
aTable.setValueByName("field_title", Field.nameToTitle(fieldName));
aTable.setValueByName("field_type", Field.typeToString(fieldType));
Object objectValue = facetRangeDate.getStart();
if (objectValue != null)
aTable.setValueByName("field_start", facetRangeDate.getStart());
objectValue = facetRangeDate.getEnd();
if (objectValue != null)
aTable.setValueByName("field_finish", facetRangeDate.getEnd());
objectValue = facetRangeDate.getGap();
if (objectValue != null)
aTable.setValueByName("field_gap", objectValue.toString());
objectValue = facetRangeDate.getAfter();
if (objectValue != null)
aTable.setValueByName("count_after", objectValue.toString());
objectValue = facetRangeDate.getBefore();
if (objectValue != null)
aTable.setValueByName("count_before", objectValue.toString());
objectValue = facetRangeDate.getBetween();
if (objectValue != null)
aTable.setValueByName("count_between", objectValue.toString());
ArrayList<String> fieldValueList = new ArrayList<>();
for (RangeFacet.Count rfCount : facetRangeDate.getCounts())
fieldValueList.add(String.format("%s (%d)", rfCount.getValue(), rfCount.getCount()));
aTable.setValuesByName("facet_name_count", fieldValueList);
aTable.addRow();
} else {
RangeFacet.Numeric facetRangeNumber = (RangeFacet.Numeric) aRangeFacet;
aTable.newRow();
aTable.setValueByName("field_name", fieldName);
if ((schemaField != null) && (StringUtils.isNotEmpty(schemaField.getTitle())))
aTable.setValueByName("field_title", schemaField.getTitle());
else
aTable.setValueByName("field_title", Field.nameToTitle(fieldName));
aTable.setValueByName("field_type", Field.typeToString(fieldType));
Object objectValue = facetRangeNumber.getStart();
if (objectValue != null)
aTable.setValueByName("field_start", objectValue.toString());
objectValue = facetRangeNumber.getEnd();
if (objectValue != null)
aTable.setValueByName("field_finish", objectValue.toString());
objectValue = facetRangeNumber.getGap();
if (objectValue != null)
aTable.setValueByName("field_gap", objectValue.toString());
objectValue = facetRangeNumber.getAfter();
if (objectValue != null)
aTable.setValueByName("count_after", objectValue.toString());
objectValue = facetRangeNumber.getBefore();
if (objectValue != null)
aTable.setValueByName("count_before", objectValue.toString());
objectValue = facetRangeNumber.getBetween();
if (objectValue != null)
aTable.setValueByName("count_between", objectValue.toString());
ArrayList<String> fieldValueList = new ArrayList<>();
for (RangeFacet.Count rfCount : facetRangeNumber.getCounts())
fieldValueList.add(String.format("%s (%d)", rfCount.getValue(), rfCount.getCount()));
aTable.setValuesByName("facet_name_count", fieldValueList);
aTable.addRow();
}
appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART);
}
From source file:eu.prestoprime.search.util.ResultProcessor.java
License:Open Source License
public static Facets extractFacetsFromResponse(QueryResponse response, Map<P4FacetField, String> facetFilters) { // Map for all facetFields with according values from the queryResponse Facets facets = new Facets(); // Put facetValues to this map for (FacetField field : response.getFacetFields()) { // validate FacetField against P4Schema and get the respective // FacetField P4FacetField p4Field = P4FacetField.get(field.getName()); if (field.getValueCount() >= 1 && p4Field != null) { Facet facet = new Facet(); facet.setFacetName(p4Field.getFieldName()); for (Count facetValue : field.getValues()) { if (!facetValue.getName().isEmpty()) { Value value = new Value(); value.setCount(facetValue.getCount()); value.setTerm(facetValue.getName()); // check if this value is already selected boolean isSelected = (facetFilters.get(p4Field) != null && facetFilters.get(p4Field).contains(facetValue.getName())); value.setSelected(isSelected); LOGGER.debug("Facet value: " + facetValue.getName() + " is selected? " + isSelected); // build a filterquery that is used when this facet is // selected String filter = ""; if (isSelected) { // deselect String[] singleValues = facetFilters.get(p4Field).replaceAll("\"", "").split("( AND )"); LOGGER.debug("Building new filter for deselecting. Starting from: " + facetFilters.get(p4Field)); String delim = ""; int i = 0; for (String s : singleValues) { LOGGER.debug("Iteration " + (++i) + ": " + s + " eq " + facetValue.getName() + " ? " + s.equals(facetValue.getName())); if (!s.equals(facetValue.getName())) { LOGGER.debug("No. Append this one -> "); filter += delim + "\"" + s + "\""; delim = " AND "; }/*from w w w .j a va 2 s .c o m*/ LOGGER.debug("Iteration " + (++i) + ": " + filter); } } else { filter = facetFilters.get(p4Field); LOGGER.debug("Altering old filter for selecting. Starting from: " + filter); if (filter == null || filter.isEmpty()) { filter = "\"" + facetValue.getName() + "\""; } else { filter += " AND \"" + facetValue.getName() + "\""; } } LOGGER.debug("Result filter = " + filter); value.setFilterQuery(filter); facet.getValue().add(value); } } facets.getFacet().add(facet); } } // do the same for rangeFacets for (RangeFacet range : response.getFacetRanges()) { P4FacetField p4Field = P4FacetField.get(range.getName()); if (range.getCounts().size() >= 1 && p4Field != null) { Facet facet = new Facet(); facet.setFacetName(p4Field.getFieldName()); if (p4Field.getAssocField().getType().equals(FieldType.TDATE)) { for (RangeFacet.Count count : (List<RangeFacet.Count>) range.getCounts()) { Value value = new Value(); value.setTerm(formatDateString(count.getValue())); value.setCount(count.getCount()); boolean isSelected = (facetFilters.get(p4Field) != null && !facetFilters.get(p4Field).isEmpty()); value.setSelected(isSelected); if (!isSelected) { value.setFilterQuery(SolrQueryUtils.getDateRangeFilter(count.getValue())); } else { value.setFilterQuery(""); } facet.getValue().add(value); } } else { // TODO implement for other ranged facets. right now no // other fieldTypes used yet... } facets.getFacet().add(facet); } } return facets; }
From source file:fr.cnes.sitools.metacatalogue.representation.GeoJsonMDEORepresentation.java
License:Open Source License
private void writeFacetRanges(JsonGenerator jGenerator) throws JsonGenerationException, IOException { jGenerator.writeObjectFieldStart("facet_ranges"); if (this.rangesFacets != null) { for (RangeFacet facet : this.rangesFacets) { jGenerator.writeObjectFieldStart(facet.getName()); jGenerator.writeArrayFieldStart("counts"); if (facet instanceof RangeFacet.Date) { RangeFacet.Date facetDate = (RangeFacet.Date) facet; for (RangeFacet.Count count : facetDate.getCounts()) { jGenerator.writeString(count.getValue()); jGenerator.writeNumber(count.getCount()); }/*from w ww .ja va2 s . c o m*/ jGenerator.writeEndArray(); jGenerator.writeStringField("start", formatDate(facetDate.getStart())); jGenerator.writeStringField("end", formatDate(facetDate.getEnd())); jGenerator.writeStringField("gap", facetDate.getGap()); writeNumber(jGenerator, "after", facetDate.getAfter()); writeNumber(jGenerator, "before", facetDate.getBefore()); writeNumber(jGenerator, "between", facetDate.getBetween()); } if (facet instanceof RangeFacet.Numeric) { RangeFacet.Numeric facetNumeric = (RangeFacet.Numeric) facet; for (RangeFacet.Count count : facetNumeric.getCounts()) { jGenerator.writeString(count.getValue()); jGenerator.writeNumber(count.getCount()); } jGenerator.writeEndArray(); writeNumber(jGenerator, "start", facetNumeric.getStart()); writeNumber(jGenerator, "end", facetNumeric.getEnd()); writeNumber(jGenerator, "gap", facetNumeric.getGap()); writeNumber(jGenerator, "after", facetNumeric.getAfter()); writeNumber(jGenerator, "before", facetNumeric.getBefore()); writeNumber(jGenerator, "between", facetNumeric.getBetween()); } jGenerator.writeEndObject(); } } jGenerator.writeEndObject(); }
From source file:org.apache.jackrabbit.core.query.lucene.FacetRow.java
License:Open Source License
public RangeFacet getRangeFacet(String name) { if (rangeFacets == null) return null; for (RangeFacet f : rangeFacets) if (f.getName().equals(name)) return f; return null;/* w ww.jav a 2s . co m*/ }
From source file:org.apache.nifi.processors.solr.QuerySolr.java
License:Apache License
private static void addFacetsFromSolrResponseToJsonWriter(final QueryResponse response, final JsonWriter writer) throws IOException { writer.beginObject();/*from w w w . jav a 2 s . co m*/ writer.name("facet_queries"); writer.beginArray(); for (final Map.Entry<String, Integer> facetQuery : response.getFacetQuery().entrySet()) { writer.beginObject(); writer.name("facet").value(facetQuery.getKey()); writer.name("count").value(facetQuery.getValue()); writer.endObject(); } writer.endArray(); writer.name("facet_fields"); writer.beginObject(); for (final FacetField facetField : response.getFacetFields()) { writer.name(facetField.getName()); writer.beginArray(); for (final FacetField.Count count : facetField.getValues()) { writer.beginObject(); writer.name("facet").value(count.getName()); writer.name("count").value(count.getCount()); writer.endObject(); } writer.endArray(); } writer.endObject(); writer.name("facet_ranges"); writer.beginObject(); for (final RangeFacet rangeFacet : response.getFacetRanges()) { writer.name(rangeFacet.getName()); writer.beginArray(); final List<Count> list = rangeFacet.getCounts(); for (final Count count : list) { writer.beginObject(); writer.name("facet").value(count.getValue()); writer.name("count").value(count.getCount()); writer.endObject(); } writer.endArray(); } writer.endObject(); writer.name("facet_intervals"); writer.beginObject(); for (final IntervalFacet intervalFacet : response.getIntervalFacets()) { writer.name(intervalFacet.getField()); writer.beginArray(); for (final IntervalFacet.Count count : intervalFacet.getIntervals()) { writer.beginObject(); writer.name("facet").value(count.getKey()); writer.name("count").value(count.getCount()); writer.endObject(); } writer.endArray(); } writer.endObject(); writer.endObject(); }
From source file:org.emonocot.pager.AbstractPageImpl.java
License:Open Source License
@JsonIgnore public RangeFacet getRangeFacet(String facetName) { for (RangeFacet rangeFacet : queryResponse.getFacetRanges()) { if (rangeFacet.getName().equals(facetName)) { return rangeFacet; }/*ww w.j a va 2s. c o m*/ } return null; }
From source file:org.emonocot.pager.AbstractPageImpl.java
License:Open Source License
/** * @return a list of the calculated facet names *///w ww .j ava 2 s. c om @JsonIgnore public List<String> getFacetNames() { List<String> facetNames = new ArrayList<String>(); for (FacetField facetField : queryResponse.getFacetFields()) { facetNames.add(facetField.getName()); } for (RangeFacet facetRange : queryResponse.getFacetRanges()) { facetNames.add(facetRange.getName()); } Collections.sort(facetNames, new FacetNameComparator()); return facetNames; }
From source file:org.opencms.jsp.search.result.CmsSearchResultWrapper.java
License:Open Source License
/** Constructor taking the main search form controller and the result list as normally returned. * @param controller The main search form controller. * @param resultList The result list as returned from OpenCms' embedded Solr server. * @param query The complete query send to Solr. * @param cms The Cms object used to access XML contents, if wanted. * @param exception Search exception, or <code>null</code> if no exception occurs. *//* w w w .j a v a 2 s .c o m*/ @SuppressWarnings("rawtypes") public CmsSearchResultWrapper(final I_CmsSearchControllerMain controller, final CmsSolrResultList resultList, final CmsSolrQuery query, final CmsObject cms, final CmsSearchException exception) { m_controller = controller; m_solrResultList = resultList; m_cmsObject = cms; m_exception = exception; m_query = query; if (resultList != null) { convertSearchResults(resultList); final long l = resultList.getStart() == null ? 1 : resultList.getStart().longValue() + 1; m_start = Long.valueOf(l); m_end = resultList.getEnd(); m_numFound = resultList.getNumFound(); m_maxScore = resultList.getMaxScore(); if (resultList.getFacetQuery() != null) { Map<String, Integer> originalMap = resultList.getFacetQuery(); m_facetQuery = new HashMap<String, Integer>(originalMap.size()); for (String q : resultList.getFacetQuery().keySet()) { m_facetQuery.put(removeLocalParamPrefix(q), originalMap.get(q)); } } List<RangeFacet> rangeFacets = resultList.getFacetRanges(); if (null != rangeFacets) { m_rangeFacetMap = new HashMap<String, RangeFacet>(rangeFacets.size()); for (RangeFacet facet : rangeFacets) { m_rangeFacetMap.put(facet.getName(), facet); } } } else { m_start = null; m_end = 0; m_numFound = 0; m_maxScore = null; } if (null == m_rangeFacetMap) { m_rangeFacetMap = new HashMap<String, RangeFacet>(); } }
From source file:org.opencommercesearch.FacetManager.java
License:Apache License
public String getFacetName(RangeFacet facet) { String facetName = facet.getName(); RepositoryItem facetItem = getFacetItem(facet.getName()); if (facetItem != null) { facetName = (String) facetItem.getPropertyValue(FacetProperty.NAME); }//from ww w . ja v a2 s . co m return facetName; }