List of usage examples for com.liferay.portal.kernel.search.facet Facet getFacetConfiguration
public FacetConfiguration getFacetConfiguration();
From source file:com.rivetlogic.portal.search.elasticsearch.util.ElasticsearchHelper.java
License:Open Source License
/** * This method adds multiple facets to Elastic search query builder. * * @param searchContext the search context * @param searchRequestBuilder the search request builder *///from www . ja v a2s . co m private void handleFacetQueries(SearchContext searchContext, SearchRequestBuilder searchRequestBuilder) { Map<String, Facet> facets = searchContext.getFacets(); for (Facet facet : facets.values()) { if (!facet.isStatic()) { FacetConfiguration liferayFacetConfiguration = facet.getFacetConfiguration(); JSONObject liferayFacetDataJSONObject = liferayFacetConfiguration.getData(); if (facet instanceof MultiValueFacet) { TermsFacetBuilder termsFacetBuilder = FacetBuilders .termsFacet(liferayFacetConfiguration.getFieldName()); termsFacetBuilder.field(liferayFacetConfiguration.getFieldName()); if (liferayFacetDataJSONObject.has(ElasticsearchIndexerConstants.ELASTIC_SEARCH_MAXTERMS)) { termsFacetBuilder.size(liferayFacetDataJSONObject .getInt(ElasticsearchIndexerConstants.ELASTIC_SEARCH_MAXTERMS)); } searchRequestBuilder.addFacet(termsFacetBuilder); } else if (facet instanceof RangeFacet) { RangeFacetBuilder rangeFacetBuilder = FacetBuilders .rangeFacet(liferayFacetConfiguration.getFieldName()); /** *A typical ranges array looks like below. *[{"range":"[20140603200000 TO 20140603220000]","label":"past-hour"},{"range":"[20140602210000 TO 20140603220000]","label":"past-24-hours"},...] * */ JSONArray rangesJSONArray = liferayFacetDataJSONObject .getJSONArray(ElasticsearchIndexerConstants.ELASTIC_SEARCH_RANGES); rangeFacetBuilder.field(ElasticsearchIndexerConstants.ELASTIC_SEARCH_INNERFIELD_MDATE); if (rangesJSONArray != null) { for (int i = 0; i < rangesJSONArray.length(); i++) { JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i); String[] fromTovalues = fetchFromToValuesInRage(rangeJSONObject); if (fromTovalues != null) { rangeFacetBuilder.addRange(fromTovalues[0].trim(), fromTovalues[1].trim()); } } } searchRequestBuilder.addFacet(rangeFacetBuilder); } } } }
From source file:com.rivetlogic.portal.search.elasticsearch.util.ElasticsearchHelper.java
License:Open Source License
/** * Fetch entry classnames.// w w w . j a v a 2s . co m * * @param liferayFacet the liferay facet * @return the sets the */ private Set<String> fetchEntryClassnames(Facet liferayFacet) { JSONObject dataJSONObject = liferayFacet.getFacetConfiguration().getData(); JSONArray valuesArray = dataJSONObject.getJSONArray(ElasticsearchIndexerConstants.ELASTIC_SEARCH_VALUES); Set<String> entryClassnames = new HashSet<String>(); if (valuesArray != null) { for (int z = 0; z < valuesArray.length(); z++) { entryClassnames.add(valuesArray.getString(z)); } } return entryClassnames; }
From source file:org.rsc.liferay.solr.SolrIndexSearcher.java
License:Open Source License
protected Hits doSearch(SearchContext searchContext, Query query) throws Exception { SolrQuery solrQuery = translateQuery(searchContext.getCompanyId(), query, searchContext.getSorts(), searchContext.getStart(), searchContext.getEnd()); Map<String, Facet> facets = searchContext.getFacets(); for (Facet facet : facets.values()) { if (facet.isStatic()) { continue; }/*from ww w . ja v a 2 s . c o m*/ FacetConfiguration facetConfiguration = facet.getFacetConfiguration(); if (facet instanceof RangeFacet) { solrQuery.addFacetField(facetConfiguration.getFieldName()); JSONObject dataJSONObject = facetConfiguration.getData(); JSONArray rangesJSONArray = dataJSONObject.getJSONArray("ranges"); if (rangesJSONArray == null) { continue; } for (int i = 0; i < rangesJSONArray.length(); i++) { JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i); String range = rangeJSONObject.getString("range"); String facetQuery = facetConfiguration.getFieldName() + StringPool.COLON + range; solrQuery.addFacetQuery(facetQuery); } } else { solrQuery.addFacetField(facetConfiguration.getFieldName()); } String facetSort = FacetParams.FACET_SORT_COUNT; String order = facetConfiguration.getOrder(); if (order.equals("OrderValueAsc")) { facetSort = FacetParams.FACET_SORT_INDEX; } solrQuery.add("f." + facetConfiguration.getFieldName() + ".facet.sort", facetSort); } solrQuery.setFacetLimit(-1); QueryResponse queryResponse = _solrServer.query(solrQuery, METHOD.POST); boolean allResults = false; if (solrQuery.getRows() == 0) { allResults = true; } List<FacetField> facetFields = queryResponse.getFacetFields(); if (facetFields != null) { for (FacetField facetField : facetFields) { Facet facet = facets.get(facetField.getName()); FacetCollector facetCollector = null; if (facet instanceof RangeFacet) { facetCollector = new SolrFacetQueryCollector(facetField.getName(), queryResponse.getFacetQuery()); } else { facetCollector = new SolrFacetFieldCollector(facetField.getName(), facetField); } facet.setFacetCollector(facetCollector); } } return subset(solrQuery, query, query.getQueryConfig(), queryResponse, allResults); }