List of usage examples for org.apache.solr.client.solrj SolrQuery setFacet
public SolrQuery setFacet(boolean b)
From source file:org.reuseware.sokan.index.solr.FacetedBrowsing.java
License:Open Source License
private static SolrQuery buildQuery(FacetedRequest request) { // create query object SolrQuery query = new SolrQuery(); // allow to define a keyword search on facets and values! // String queryString = request.getKeywordSearchString(); // if (queryString != null && !queryString.equals("")) // query.setQuery(queryString); // maintain faceted constraints List<Constraint> constList = request.getConstraints(); if (constList == null || constList.isEmpty()) { return null; }/*from w ww .j a v a 2 s . c om*/ // start building queryString String queryString = ""; String valueString; String field; EList<String> valueList; Set<String> fields = CONTROLER.getFieldNames(); boolean stop; for (Constraint con : constList) { valueString = ":("; valueList = con.getValues(); field = SolrUtil.adaptField(con.getName(), fields); if (field == null) { continue; } if (valueList.size() == 0 || valueList.contains("")) { queryString += "-" + field + ":" + "[\"\" TO *]" + AND; } else { stop = false; for (String value : valueList) { //TODO #1261: de-activated to allow complex query construction /*if (value.contains("*") && (value.contains(" ") || value.startsWith("*"))) { stop = true; break; }*/ if (value != null && value.contains("*")) { queryString += field + ":" + value + AND; stop = true; break; } valueString += "\"" + value + "\" "; } if (stop) { continue; } queryString += field + CoreUtil.trimLastChar(valueString) + ")" + AND; } } if ("".equals(queryString)) { return null; } queryString = CoreUtil.trimLastSeperator(queryString, AND); query.setQuery(queryString); // maintain facet fields to get facetCounts List<String> facetFields = request.getFacetFields(); if (facetFields != null && facetFields.size() > 0) { query.setFacet(true); for (String facet : facetFields) { query.addFacetField(facet); } } // TODO #1142: add rows and offset parameters CONTROLER.limit(query, request.getRows()); return query; }
From source file:org.schedoscope.metascope.index.SolrQueryExecutor.java
License:Apache License
/** * Perform a query on the metascope solr index. Builds up the query string * from the given parameters and sends request to solr server * /*from w w w .java 2 s . c o m*/ * @param params * the parameters which are included in the filter query * @return a SolrQueryResult object containing the result of the query */ public SolrQueryResult query(Map<String, String> params) { SolrQuery query = new SolrQuery(); /* enable facetting */ query.setFacet(true); /* list of all filters; key: name to display, value: entity parameter */ List<SolrQueryParameter> filter = new ArrayList<SolrQueryParameter>(); /* list of partition filter */ List<SolrQueryParameter> partitionFilter = new ArrayList<SolrQueryParameter>(); /* * list of filter which have been set by the user (key = filtername, value = * list of selections) */ Map<String, List<String>> activeFilterValues = new HashMap<String, List<String>>(); /* * determine on which type is searched for (either 'Table' or 'Partition') */ String typeFilterValue = params.get(TYPE); filter.add(new SolrQueryParameter(FILTER_TYPE, TYPE, FilterType.EXCLUSIVE, FacetSort.COUNT)); if (typeFilterValue != null && typeFilterValue.equalsIgnoreCase(TYPE_PARTITION)) { typeFilterValue = TYPE_PARTITION; for (String parameter : fieldEntityService.findDistinctParameters()) { partitionFilter.add(new SolrQueryParameter("Parameter: " + parameter, parameter + "_s", FilterType.AND, FacetSort.INDEX)); } for (SolrQueryParameter pFilter : partitionFilter) { query.addFacetField(pFilter.getName()); query.add("f." + pFilter.getName() + ".facet.sort", "index"); String filterValue = params.get(pFilter.getName()); if (filterValue != null && !filterValue.isEmpty()) { query.addFilterQuery(pFilter.getName() + ":" + "(" + filterValue.replace(",", " AND ") + ")"); } } } else { typeFilterValue = TYPE_TABLE; } query.addFilterQuery("{!tag=" + TYPE + "}" + TYPE + ":" + typeFilterValue); query.addFacetField("{!ex=" + TYPE + "}" + TYPE); /* set solr search query parameter 'q' */ String searchQueryValue = params.get(URLUtil.SEARCH_QUERY_PARAM); if (searchQueryValue == null || searchQueryValue.isEmpty()) { searchQueryValue = "*"; query.setQuery(searchQueryValue); } else { String[] queryTerms = searchQueryValue.trim().split(" "); String queryTerm = ""; for (String term : queryTerms) { if (term.isEmpty()) { continue; } if (!queryTerm.isEmpty()) { queryTerm += " AND "; } queryTerm += "*" + term + "*"; } query.setQuery(queryTerm); query.setHighlight(true); query.setHighlightSimplePre("<b>"); query.setHighlightSimplePost("</b>"); query.setHighlightSnippets(100); query.set("hl.fl", "*"); } /* set the remaining filters */ for (SolrQueryParameter queryFilter : facetFields) { filter.add(queryFilter); String value = params.get(queryFilter.getName()); String filterQuery = ""; String facetField = ""; if (queryFilter.isExcludeFromFacet()) { if (value != null) { String[] multipleFilter = value.split(","); value = "("; for (int i = 0; i < multipleFilter.length; i++) { String filterValue = cleanseValue(multipleFilter[i]).replace(" ", "*"); value += "(" + filterValue + ")"; if (i < multipleFilter.length - 1) { value += " " + getOperator(queryFilter.getFilterType()) + " "; } } value += ")"; } filterQuery = "{!tag=" + queryFilter.getName() + "}" + queryFilter.getName() + ":" + value; facetField = "{!ex=" + queryFilter.getName() + "}" + queryFilter.getName(); } else { if (value != null) { String[] multipleFilter = value.split(","); value = "("; for (int i = 0; i < multipleFilter.length; i++) { String filterValue = cleanseValue(multipleFilter[i]).replace(" ", "*"); value += "(" + filterValue + ")"; if (i < multipleFilter.length - 1) { value += " " + getOperator(queryFilter.getFilterType()) + " "; } } value += ")"; } filterQuery = queryFilter.getName() + ":" + value; facetField = queryFilter.getName(); } if (value != null && !value.isEmpty()) { query.addFilterQuery(filterQuery); } query.addFacetField(facetField); if (queryFilter.getFacetSort().equals(FacetSort.INDEX)) { query.add("f." + queryFilter.getName() + ".facet.sort", "index"); } query.add("f." + queryFilter.getName() + ".facet.limit", "-1"); } /* set facet queries */ Map<String, String> facetQueryMap = new HashMap<String, String>(); long now = System.currentTimeMillis() / 1000; for (SolrFacetQuery solrFacetQuery : facetQueries) { for (SolrHourRange range : solrFacetQuery.getRanges()) { long from = range.getFrom() == Long.MAX_VALUE ? 0 : now - (range.getFrom() * 3600); String facetQueryString = solrFacetQuery.getName() + ":[" + from + " TO " + now + "]"; query.addFacetQuery("{!ex=" + solrFacetQuery.getName() + "}" + facetQueryString); facetQueryMap.put(solrFacetQuery.getName() + range.getName(), facetQueryString); } String value = params.get(solrFacetQuery.getName()); if (value != null) { String fq = "{!tag=" + solrFacetQuery.getName() + "}" + facetQueryMap.get(solrFacetQuery.getName() + value); query.addFilterQuery(fq); } } /* always sort the entities (for a deterministic view) */ query.setSort(ID, ORDER.asc); /* set pagination information */ int page = getPageParameter(params); int elements = getElementsParameter(params); query.setRows(elements); query.setStart((page - 1) * elements); /* execute the query */ QueryResponse queryResponse = null; try { queryResponse = solrClient.query(query); } catch (Exception e) { e.printStackTrace(); } SolrDocumentList list = queryResponse.getResults(); /* get table / view entities from local repository */ List<SolrQueryResultEntity> resultEntities = new LinkedList<SolrQueryResultEntity>(); String resultType = ""; for (SolrDocument solrDocument : list) { String id = (String) solrDocument.get(ID); if (typeFilterValue.equalsIgnoreCase(TYPE_PARTITION)) { if (!searchQueryValue.equals("*")) { resultEntities.add(new SolrQueryResultEntity(viewEntityService.findByUrlPath(id), queryResponse.getHighlighting().get(id))); } else { resultEntities.add(new SolrQueryResultEntity(viewEntityService.findByUrlPath(id))); } resultType = TYPE_PARTITION; } else if (typeFilterValue.equalsIgnoreCase(TYPE_TABLE)) { if (!searchQueryValue.equals("*")) { resultEntities.add(new SolrQueryResultEntity(tableEntityService.findByFqdn(id), queryResponse.getHighlighting().get(id))); } else { resultEntities.add(new SolrQueryResultEntity(tableEntityService.findByFqdn(id))); } } } if (resultType.isEmpty()) { resultType = TYPE_TABLE; } filter.addAll(partitionFilter); /* get the facet values and counts */ Map<String, List<SolrFacet>> facetValues = new HashMap<String, List<SolrFacet>>(); for (SolrQueryParameter f : filter) { if (!f.getName().equals(URLUtil.SEARCH_QUERY_PARAM)) { List<SolrFacet> values = new ArrayList<SolrFacet>(); FacetField facet = queryResponse.getFacetField(f.getName()); for (Count count : facet.getValues()) { values.add(new SolrFacet(count.getName(), count.getCount())); } facetValues.put(f.getName(), values); } } /* remove the type filter */ filter.remove(0); for (SolrFacetQuery solrFacetQuery : facetQueries) { filter.add(new SolrQueryParameter(solrFacetQuery.getDisplayName(), solrFacetQuery.getName(), FilterType.EXCLUSIVE)); List<SolrFacet> values = new ArrayList<SolrFacet>(); for (SolrHourRange range : solrFacetQuery.getRanges()) { long facetQueryCount = getFacetQueryCount(queryResponse, "{!ex=" + solrFacetQuery.getName() + "}" + facetQueryMap.get(solrFacetQuery.getName() + range.getName())); values.add(new SolrFacet(range.getName(), facetQueryCount)); } facetValues.put(solrFacetQuery.getName(), values); } /* get the active filter values which have been selected by the user */ addToActiveFilterValues(activeFilterValues, params, filter); /* build and return the result */ SolrQueryResult result = new SolrQueryResult().withResultEntities(resultEntities).withResultType(resultType) .withFilters(filter).withFacetValues(facetValues).withActiveFilterValues(activeFilterValues) .withSearchQuery(searchQueryValue).withPage(page).withElements(elements) .withTotalPages((int) Math.ceil(((double) list.getNumFound()) / elements)) .withTotalResults(list.getNumFound()); return result; }
From source file:org.sparkcommerce.core.search.service.solr.SolrSearchServiceImpl.java
License:Apache License
/** * Notifies solr about which facets you want it to determine results and counts for * /* ww w . jav a 2s . co m*/ * @param query * @param namedFacetMap */ protected void attachFacets(SolrQuery query, Map<String, SearchFacetDTO> namedFacetMap) { query.setFacet(true); for (Entry<String, SearchFacetDTO> entry : namedFacetMap.entrySet()) { SearchFacetDTO dto = entry.getValue(); String facetTagField = entry.getValue().isActive() ? shs.getGlobalFacetTagField() : entry.getKey(); // Clone the list - we don't want to remove these facets from the DB List<SearchFacetRange> facetRanges = new ArrayList<SearchFacetRange>( dto.getFacet().getSearchFacetRanges()); if (extensionManager != null) { extensionManager.getProxy().filterSearchFacetRanges(dto, facetRanges); } if (facetRanges != null && facetRanges.size() > 0) { for (SearchFacetRange range : facetRanges) { query.addFacetQuery(getSolrTaggedFieldString(entry.getKey(), facetTagField, "ex", range)); } } else { query.addFacetField(getSolrTaggedFieldString(entry.getKey(), facetTagField, "ex", null)); } } }
From source file:org.springframework.data.solr.core.DefaultQueryParser.java
License:Apache License
private boolean enableFaceting(SolrQuery solrQuery, FacetQuery query) { FacetOptions facetOptions = query.getFacetOptions(); if (facetOptions == null || (!facetOptions.hasFields() && !facetOptions.hasFacetQueries() && !facetOptions.hasPivotFields())) { return false; }// w w w. ja va 2s . co m solrQuery.setFacet(true); solrQuery.setFacetMinCount(facetOptions.getFacetMinCount()); solrQuery.setFacetLimit(facetOptions.getPageable().getPageSize()); if (facetOptions.getPageable().getPageNumber() > 0) { int offset = Math.max(0, facetOptions.getPageable().getOffset()); solrQuery.set(FacetParams.FACET_OFFSET, offset); } if (FacetOptions.FacetSort.INDEX.equals(facetOptions.getFacetSort())) { solrQuery.setFacetSort(FacetParams.FACET_SORT_INDEX); } return true; }
From source file:org.wso2.carbon.registry.indexing.solr.SolrClient.java
License:Open Source License
private String addFacetFields(Map<String, String> fields, SolrQuery query) { //set the facet true to enable facet //Need to set the Facet to true to enable Facet Query. query.setFacet(true); String fieldName = fields.get(IndexingConstants.FACET_FIELD_NAME); String queryField = null;//from ww w .j a va 2s .c o m if (fieldName != null) { //set the field for the facet if (IndexingConstants.FIELD_TAGS.equals(fieldName) || IndexingConstants.FIELD_COMMENTS.equals(fieldName) || IndexingConstants.FIELD_ASSOCIATION_DESTINATIONS.equals(fieldName) || IndexingConstants.FIELD_ASSOCIATION_TYPES.equals(fieldName)) { queryField = fieldName + SolrConstants.SOLR_MULTIVALUED_STRING_FIELD_KEY_SUFFIX; query.addFacetField(queryField); } else { queryField = fieldName + SolrConstants.SOLR_STRING_FIELD_KEY_SUFFIX; query.addFacetField(queryField); } //remove the facet field avoid affecting to query results fields.remove(IndexingConstants.FACET_FIELD_NAME); //set the limit for the facet if (fields.get(IndexingConstants.FACET_LIMIT) != null) { query.setFacetLimit(Integer.parseInt(fields.get(IndexingConstants.FACET_LIMIT))); fields.remove(IndexingConstants.FACET_LIMIT); } else { query.setFacetLimit(IndexingConstants.FACET_LIMIT_DEFAULT); } //set the min count for the facet if (fields.get(IndexingConstants.FACET_MIN_COUNT) != null) { query.setFacetMinCount(Integer.parseInt(fields.get(IndexingConstants.FACET_MIN_COUNT))); fields.remove(IndexingConstants.FACET_MIN_COUNT); } else { query.setFacetMinCount(IndexingConstants.FACET_MIN_COUNT_DEFAULT); } //set the sort value for facet: possible values : index or count if (fields.get(IndexingConstants.FACET_SORT) != null) { query.setFacetSort(fields.get(IndexingConstants.FACET_SORT)); fields.remove(IndexingConstants.FACET_SORT); } // set the prefix value for facet if (fields.get(IndexingConstants.FACET_PREFIX) != null) { query.setFacetPrefix(fields.get(IndexingConstants.FACET_PREFIX)); fields.remove(IndexingConstants.FACET_PREFIX); } } return queryField; }
From source file:org.zaizi.sensefy.api.service.SolrSmartAutoCompleteService.java
License:Open Source License
/** * <p>// ww w . j a va2 s . co m * Suggestions from Facet Prefix * </p> * * @param attributesQuery * @param termToComplete * @param numberOfSuggestions * @param suggestionField * @param solrCore * @return * @throws SolrServerException */ private List<String> suggestionsFromFacetPrefix(SolrQuery attributesQuery, String termToComplete, int numberOfSuggestions, String suggestionField, SolrServer solrCore) throws SolrServerException, IOException { List<String> suggestions = new ArrayList<String>(); attributesQuery.setRows(0); attributesQuery.setFacet(true); attributesQuery.addFacetField(suggestionField); attributesQuery.setFacetMinCount(1); attributesQuery.setFacetLimit(numberOfSuggestions); // if ( termToComplete != null && !termToComplete.isEmpty() ) attributesQuery.setFacetPrefix(suggestionField, termToComplete); QueryResponse attributesQueryResponse; attributesQueryResponse = solrCore.query(attributesQuery); FacetField facetField = attributesQueryResponse.getFacetField(suggestionField); List<FacetField.Count> facets = facetField.getValues(); for (FacetField.Count singleFacet : facets) { suggestions.add(singleFacet.getName()); } return suggestions; }
From source file:org.zaizi.sensefy.api.solr.querybuilder.QueryBuilder.java
License:Open Source License
/** * return a solr query built with all the parameters in input . Spellcheck * included/* ww w . j ava 2 s. c o m*/ * * @param query * @param fields * @param filters * @param start * @param rows * @param security * @param clustering * @param sensefyToken * @return * @throws SensefyException */ public static SolrQuery getSolrQuery(String query, String fields, boolean facet, FacetConfigurationList facetConfig, String filters, int start, Integer rows, String order, boolean security, boolean spellcheck, boolean clustering, Principal user) { SensefyUser sensefyUser = SensefyUserMapper.getSensefyUserFromPrincipal(user); if (rows == null) { rows = DEFAULT_ROWS; } // retrieve the documents from primary index SolrQuery documentsQuery = new SolrQuery(query); Set<String> selectedFields = new HashSet<String>(); documentsQuery.setRows(rows); documentsQuery.set("spellcheck", spellcheck); documentsQuery.set("clustering", clustering); if (fields != null && !fields.isEmpty()) { String[] fieldsArray = fields.split(","); documentsQuery.setFields(fieldsArray); } if (filters != null && !filters.isEmpty()) { String[] filtersArray = buildFilterQueries(filters.split(","), selectedFields); documentsQuery.setFilterQueries(filtersArray); } if (order != null && !order.isEmpty()) { documentsQuery.set(CommonParams.SORT, order); } if (security) { String filterQueryACLs = SecurityQueryBuilder.getSecurityFilterQuery(sensefyUser); documentsQuery.addFilterQuery(filterQueryACLs); } documentsQuery.set("TZ", sensefyUser.getTimezone().getID()); documentsQuery.setStart(start); ModifiableSolrParams querySolrParams = new ModifiableSolrParams(); if (facet) { // facets must be created with proper exclusion tag where needed documentsQuery.setFacet(true); List<FacetConfiguration> facetConfigurations = facetConfig.getFacetConfigurations(); for (FacetConfiguration facetConfiguration : facetConfigurations) { String tag = null; if (selectedFields.contains(facetConfiguration.getField())) tag = "tag-" + facetConfiguration.getField(); facetConfiguration.getSolrFacetParams(querySolrParams, tag); } } documentsQuery.add(querySolrParams); return documentsQuery; }
From source file:org.zenoss.zep.index.impl.solr.SolrEventIndexBackend.java
License:Open Source License
private SolrQuery buildSolrQuery(EventFilter filter, EventFilter exclusionFilter, Integer limit, Integer offset, List<EventSort> sortList, SolrFieldFilter fieldFilter) throws ZepException { final String query = buildQuery(filter, exclusionFilter); SolrQuery solrQuery = new SolrQuery().setQuery(query); if (limit != null && limit < MAX_RESULTS && limit > 0) solrQuery.setRows(limit);/*from www . j a v a2s . co m*/ else solrQuery.setRows(MAX_RESULTS); if (offset != null) solrQuery.setStart(offset); if (sortList == null) solrQuery.clearSorts(); else if (sortList.isEmpty()) solrQuery.addSort(SortClause.desc(IndexConstants.FIELD_LAST_SEEN_TIME)); else for (EventSort sort : sortList) for (SortClause clause : createSortClauses(sort)) solrQuery.addSort(clause); if (fieldFilter != null) { switch (fieldFilter) { case DEFAULTS: break; case JUST_UUID: solrQuery.setFields(IndexConstants.FIELD_UUID); break; case UUID_LAST_SEEN_AND_PROTOBUF: solrQuery.setFields(IndexConstants.FIELD_UUID, IndexConstants.FIELD_LAST_SEEN_TIME, IndexConstants.FIELD_PROTOBUF); break; case SEARCH_EVENT_TAG_SEVERITIES: solrQuery.setFields(IndexConstants.FIELD_ELEMENT_IDENTIFIER, IndexConstants.FIELD_ELEMENT_SUB_IDENTIFIER, IndexConstants.FIELD_SEVERITY, IndexConstants.FIELD_STATUS, IndexConstants.FIELD_TAGS, IndexConstants.FIELD_COUNT); break; default: throw new IllegalStateException("Unexpected fieldFilter: " + fieldFilter); } } solrQuery.setIncludeScore(false); solrQuery.setHighlight(false); solrQuery.setTerms(false); solrQuery.setFacet(false); return solrQuery; }
From source file:org.zenoss.zep.index.impl.solr.SolrEventIndexBackend.java
License:Open Source License
@Override protected void searchEventTagSeverities(EventFilter filter, final EventTagSeverityCounter counter) throws ZepException { assertReady();/*from w w w. j a va2 s . c om*/ if (filter.getTagFilterCount() == 0) { SolrQuery solrQuery = buildSolrQuery(filter, null, null, null, null, SolrFieldFilter.DEFAULTS); solrQuery.setRows(0); solrQuery.setFields(); solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1); solrQuery.addFacetPivotField(IndexConstants.FIELD_ELEMENT_IDENTIFIER, IndexConstants.FIELD_SEVERITY, IndexConstants.FIELD_STATUS, IndexConstants.FIELD_COUNT); try { QueryResponse response = queryServer.query(solrQuery); for (PivotField pivotElementId : response.getFacetPivot().getVal(0)) { final String uuid = (String) pivotElementId.getValue(); for (PivotField pivotSeverity : pivotElementId.getPivot()) { final EventSeverity severity = EventSeverity .valueOf(Integer.parseInt((String) pivotSeverity.getValue())); for (PivotField pivotStatus : pivotSeverity.getPivot()) { final EventStatus status = EventStatus .valueOf(Integer.parseInt((String) pivotStatus.getValue())); final boolean acknowledged = EventStatus.STATUS_ACKNOWLEDGED.equals(status); for (PivotField pivotCount : pivotStatus.getPivot()) { final Integer count = pivotCount.getCount() * (Integer) pivotCount.getValue(); counter.update(uuid, severity, count, acknowledged); } } } } } catch (SolrServerException e) { throw new ZepException(e); } } else { SolrQuery solrQuery = buildSolrQuery(filter, null, null, null, null, SolrFieldFilter.SEARCH_EVENT_TAG_SEVERITIES); try { queryServer.queryAndStreamResponse(solrQuery, new StreamingResponseCallback() { @Override public void streamSolrDocument(SolrDocument doc) { final EventSeverity severity = EventSeverity .valueOf(Integer.parseInt((String) doc.getFieldValue(FIELD_SEVERITY))); final EventStatus status = EventStatus .valueOf(Integer.parseInt((String) doc.getFieldValue(FIELD_STATUS))); final boolean acknowledged = EventStatus.STATUS_ACKNOWLEDGED.equals(status); final int count = Integer.parseInt((String) doc.getFieldValue(FIELD_COUNT)); for (String fieldName : new String[] { FIELD_ELEMENT_IDENTIFIER, FIELD_ELEMENT_SUB_IDENTIFIER }) { final String uuid = (String) doc.getFieldValue(fieldName); counter.update(uuid, severity, count, acknowledged); } for (Object tag : doc.getFieldValues(FIELD_TAGS)) { counter.update((String) tag, severity, count, acknowledged); } } @Override public void streamDocListInfo(long numFound, long start, Float maxScore) { // ignored } }); } catch (SolrServerException e) { throw new ZepException(e); } catch (IOException e) { throw new ZepException(e); } } }
From source file:ru.org.linux.search.SearchViewer.java
License:Apache License
public QueryResponse performSearch(SolrServer search) throws SolrServerException { SolrQuery params = new SolrQuery(); // set search query params params.set("q", query.getQ()); params.set("rows", SEARCH_ROWS); params.set("start", query.getOffset()); params.set("qt", "edismax"); if (query.getRange().getParam() != null) { params.add("fq", query.getRange().getParam()); }//w w w . ja v a 2 s.c o m if (query.getInterval().getRange() != null) { params.add("fq", query.getInterval().getRange()); } params.setFacetMinCount(1); params.setFacet(true); String section = query.getSection(); if (section != null && !section.isEmpty() && !"0".equals(section)) { params.add("fq", "{!tag=dt}section:" + query.getSection()); params.addFacetField("{!ex=dt}section"); params.addFacetField("{!ex=dt}group_id"); } else { params.addFacetField("section"); params.addFacetField("group_id"); } if (query.getUser() != null) { User user = query.getUser(); if (query.isUsertopic()) { params.add("fq", "topic_user_id:" + user.getId()); } else { params.add("fq", "user_id:" + user.getId()); } } if (query.getGroup() != 0) { params.add("fq", "{!tag=dt}group_id:" + query.getGroup()); } params.set("sort", query.getSort().getParam()); return search.query(params); }