@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { return group(groupRequest, new QueryStringQueryBuilder(groupRequest.getQuery())); }
@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { // Make sure to escape any problematic characters here String sourceType = ClientUtils.escapeQueryChars(config.getSourceTypeField()); String baseQuery = groupRequest.getQuery(); String adjustedQuery = baseQuery + " -" + MetaAlertConstants.METAALERT_FIELD + ":[* TO *]" + " -" + sourceType + ":" + MetaAlertConstants.METAALERT_TYPE; LOG.debug("MetaAlert group adjusted query: {}", adjustedQuery); groupRequest.setQuery(adjustedQuery); return solrSearchDao.group(groupRequest); } }
@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { try { String groupNames = groupRequest.getGroups().stream().map(Group::getField).collect( Collectors.joining(",")); SolrQuery query = new SolrQuery() .setStart(0) .setRows(0) .setQuery(groupRequest.getQuery()); query.set("collection", getCollections(groupRequest.getIndices())); Optional<String> scoreField = groupRequest.getScoreField(); if (scoreField.isPresent()) { query.set("stats", true); query.set("stats.field", String.format("{!tag=piv1 sum=true}%s", scoreField.get())); } query.set("facet", true); query.set("facet.pivot", String.format("{!stats=piv1}%s", groupNames)); QueryResponse response = client.query(query); return buildGroupResponse(groupRequest, response); } catch (IOException | SolrServerException e) { String msg = e.getMessage(); LOG.error(msg, e); throw new InvalidSearchException(msg, e); } }
@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { // Wrap the query to hide any alerts already contained in meta alerts QueryBuilder qb = QueryBuilders.boolQuery() .must(new QueryStringQueryBuilder(groupRequest.getQuery())) .mustNot(existsQuery(MetaAlertConstants.METAALERT_FIELD)); return elasticsearchDao.group(groupRequest, qb); }