public SearchResponse search(SearchRequest searchRequest, String fieldList) throws InvalidSearchException { if (searchRequest.getQuery() == null) { throw new InvalidSearchException("Search query is invalid: null"); } if (client == null) { throw new InvalidSearchException("Uninitialized Dao! You must call init() prior to use."); } if (searchRequest.getSize() > accessConfig.getMaxSearchResults()) { throw new InvalidSearchException( "Search result size must be less than " + accessConfig.getMaxSearchResults()); } try { SolrQuery query = buildSearchRequest(searchRequest, fieldList); QueryResponse response = client.query(query); return buildSearchResponse(searchRequest, response); } catch (SolrException | IOException | SolrServerException e) { String msg = e.getMessage(); LOG.error(msg, e); throw new InvalidSearchException(msg, e); } }
if (isMatch(searchRequest.getQuery(), docParsed)) { SearchResult result = new SearchResult(); result.setSource(docParsed);
protected SolrQuery buildSearchRequest( SearchRequest searchRequest, String fieldList) throws IOException, SolrServerException { SolrQuery query = new SolrQuery() .setStart(searchRequest.getFrom()) .setRows(searchRequest.getSize()) .setQuery(searchRequest.getQuery()); // handle sort fields for (SortField sortField : searchRequest.getSort()) { query.addSort(sortField.getField(), getSolrSortOrder(sortField.getSortOrder())); } // handle search fields List<String> fields = searchRequest.getFields(); if (fieldList == null) { fieldList = "*"; if (fields != null) { fieldList = StringUtils.join(fields, ","); } } query.set("fl", fieldList); //handle facet fields List<String> facetFields = searchRequest.getFacetFields(); if (facetFields != null) { facetFields.forEach(query::addFacetField); } query.set("collection", getCollections(searchRequest.getIndices())); return query; }
@Override public SearchResponse search(SearchRequest searchRequest) throws InvalidSearchException { // Wrap the query to also get any meta-alerts. QueryBuilder qb = constantScoreQuery(boolQuery() .must(boolQuery() .should(new QueryStringQueryBuilder(searchRequest.getQuery())) .should(nestedQuery( MetaAlertConstants.ALERT_FIELD, new QueryStringQueryBuilder(searchRequest.getQuery()), ScoreMode.None ) ) ) // Ensures that it's a meta alert with active status or that it's an alert (signified by // having no status field) .must(boolQuery() .should(termQuery(MetaAlertConstants.STATUS_FIELD, MetaAlertStatus.ACTIVE.getStatusString())) .should(boolQuery().mustNot(existsQuery(MetaAlertConstants.STATUS_FIELD))) ) .mustNot(existsQuery(MetaAlertConstants.METAALERT_FIELD)) ); return elasticsearchDao.search(searchRequest, qb); }