List of usage examples for com.liferay.portal.kernel.search.facet.config FacetConfiguration getData
public JSONObject getData()
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 ww w . j a v a2 s.c o 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.rknowsys.portal.search.elastic.facet.LiferayFacetParser.java
License:Open Source License
public static AggregationBuilder getFacetBuilder(RangeFacet rangeFacet) { FacetConfiguration facetConfiguration = rangeFacet.getFacetConfiguration(); RangeBuilder rangeFacetBuilder = AggregationBuilders.range(facetConfiguration.getFieldName()); JSONObject facetData = facetConfiguration.getData(); if (rangeFacet.isStatic()) { return null; }//from w w w . j ava2 s . c om if (facetData.has("ranges")) { JSONArray rangesJSONArray = facetData.getJSONArray("ranges"); if (rangesJSONArray != null) { rangeFacetBuilder.field(facetConfiguration.getFieldName()); for (int i = 0; i < rangesJSONArray.length(); i++) { JSONObject rangeJSONObject = rangesJSONArray.getJSONObject(i); String rangeString = rangeJSONObject.getString("range"); String[] range = RangeParserUtil.parserRange(rangeString); rangeFacetBuilder.addRange(Double.parseDouble(range[0]), Double.parseDouble(range[1])); } return rangeFacetBuilder; } else { return null; } } else { return null; } }
From source file:com.rknowsys.portal.search.elastic.facet.LiferayFacetParser.java
License:Open Source License
public static AggregationBuilder getFacetBuilder(MultiValueFacet multiValueFacet) { FacetConfiguration facetConfiguration = multiValueFacet.getFacetConfiguration(); JSONObject facetData = facetConfiguration.getData(); if (multiValueFacet.isStatic()) { return null; }/*from w ww .j a va 2s.c o m*/ TermsBuilder termsFacetBuilder = AggregationBuilders.terms(facetConfiguration.getFieldName()); if (facetData.has("maxTerms")) { termsFacetBuilder.size(facetData.getInt("maxTerms")); } termsFacetBuilder.field(facetConfiguration.getFieldName()); return termsFacetBuilder; }
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 w w w . j av a 2s .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); }