List of usage examples for com.liferay.portal.kernel.search SearchContext getSorts
public Sort[] getSorts()
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java
License:Open Source License
@Override public String buildQuery(SearchContext searchContext, Query query) throws SearchException { StringBundler sb = new StringBundler(); sb.append("SELECT cmis:objectId"); QueryConfig queryConfig = searchContext.getQueryConfig(); if (queryConfig.isScoreEnabled()) { sb.append(", SCORE() AS HITS"); }/*from w ww .ja va 2 s. c o m*/ sb.append(" FROM cmis:document"); CMISDisjunction cmisDisjunction = new CMISDisjunction(); if (_log.isDebugEnabled()) { _log.debug("Repository query support " + queryConfig.getAttribute("capabilityQuery")); } if (!isSupportsOnlyFullText(queryConfig)) { traversePropertiesQuery(cmisDisjunction, query, queryConfig); } if (isSupportsFullText(queryConfig)) { CMISContainsExpression cmisContainsExpression = new CMISContainsExpression(); traverseContentQuery(cmisContainsExpression, query, queryConfig); if (!cmisContainsExpression.isEmpty()) { cmisDisjunction.add(cmisContainsExpression); } } if (!cmisDisjunction.isEmpty()) { sb.append(" WHERE "); sb.append(cmisDisjunction.toQueryFragment()); } Sort[] sorts = searchContext.getSorts(); if (queryConfig.isScoreEnabled() || ArrayUtil.isNotEmpty(sorts)) { sb.append(" ORDER BY "); } if (ArrayUtil.isNotEmpty(sorts)) { int i = 0; for (Sort sort : sorts) { String fieldName = sort.getFieldName(); if (!isSupportedField(fieldName)) { continue; } if (i > 0) { sb.append(", "); } sb.append(getCmisField(fieldName)); if (sort.isReverse()) { sb.append(" DESC"); } else { sb.append(" ASC"); } i++; } } else if (queryConfig.isScoreEnabled()) { sb.append("HITS DESC"); } if (_log.isDebugEnabled()) { _log.debug("CMIS query " + sb); } return sb.toString(); }
From source file:com.rivetlogic.portal.search.elasticsearch.util.ElasticsearchHelper.java
License:Open Source License
/** * Gets the search hits./*from ww w. ja va 2 s .c o m*/ * * @param searchContext the search context * @param query the query * @return the search hits */ public Hits getSearchHits(SearchContext searchContext, Query query) { if (_log.isInfoEnabled()) { _log.info("Search against Elasticsearch with SearchContext"); } Hits hits = new HitsImpl(); hits.setStart(new Date().getTime()); Client client = this._esConnector.getClient(); String keywords = searchContext.getKeywords(); SearchRequestBuilder searchRequestBuilder = client .prepareSearch(ElasticsearchIndexerConstants.ELASTIC_SEARCH_LIFERAY_INDEX) .setQuery(_esQueryBuilder.doSearch(query)); // Handle Search Facet queries handleFacetQueries(searchContext, searchRequestBuilder); SearchResponse response = null; if (getSort(searchContext.getSorts()) != null) { searchRequestBuilder = searchRequestBuilder.setFrom(searchContext.getStart()) .setSize(searchContext.getEnd()).addSort(getSort(searchContext.getSorts())); } else { searchRequestBuilder = searchRequestBuilder.setFrom(searchContext.getStart()) .setSize(searchContext.getEnd()); } response = searchRequestBuilder.execute().actionGet(); collectFacetResults(searchContext, response); SearchHits searchHits = response.getHits(); hits.setDocs(getDocuments(searchHits, searchContext)); hits.setScores(getScores(searchHits)); hits.setSearchTime((float) (System.currentTimeMillis() - hits.getStart()) / Time.SECOND); hits.setQuery(query); if (keywords != null) { hits.setQueryTerms(keywords.split(StringPool.SPACE)); } hits.setLength((int) searchHits.getTotalHits()); hits.setStart(hits.getStart()); return hits; }
From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexSearcher.java
License:Open Source License
private SearchRequestBuilder prepareSearchBuilder(SearchContext searchContext, Query query, Client client, int start, int end) { SearchRequestBuilder searchRequestBuilder = client.prepareSearch(Utilities.getIndexName(searchContext)); addHighlights(query, searchRequestBuilder); //QueryBuilder queryBuilder = com.rknowsys.portal.search.elastic.liferay.QueryTranslatorUtil.translate(query); //if (queryBuilder == null) { String q = applyCustomESRules(query.toString()); QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(q); //}/*from ww w .ja va 2 s. com*/ searchRequestBuilder.setQuery(queryBuilder); _log.debug("Query String" + queryBuilder.toString()); searchRequestBuilder.setTypes("documents"); addFacetCollectorsToSearch(searchContext, searchRequestBuilder); addSortToSearch(searchContext.getSorts(), searchRequestBuilder); int size = end - start; _log.debug("Search Start: " + start + " Search Size: " + size); if ((start != QueryUtil.ALL_POS) && (end != QueryUtil.ALL_POS)) { searchRequestBuilder.setFrom(start).setSize(size); } return searchRequestBuilder; }
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; }// w w w .j a va2 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); }