List of usage examples for org.apache.solr.client.solrj SolrQuery addSort
public SolrQuery addSort(SortClause sortClause)
From source file:org.dbflute.solr.cbean.AbstractSolrConditionBean.java
License:Apache License
@Override public SolrQuery buildSolrQuery() { SolrQuery query = new SolrQuery(); if (this.isSpecified()) { query.setFields(this.getSpecifyFields()); } else {//from w w w . java 2 s . c o m query.setFields(this.getAllFields()); } if (this.isUseFilterQuery()) { query.setQuery(this.getMinimumQuery()); query.setFilterQueries(this.getQueryArray()); } else { query.setQuery(this.getQueryString()); String[] filterQueryArray = this.getFilterQueryArray(); if (filterQueryArray != null && filterQueryArray.length != 0) { query.setFilterQueries(this.getFilterQueryArray()); } } if (this.isUseSort()) { for (SortClause sortClause : this.getSolrSortClauseList()) { query.addSort(sortClause); } } for (SolrQueryBean queryBean : this.getFacetQueryList()) { query.addFacetQuery(queryBean.getQueryString()); } SolrSpecification facetSpecifyBean = getFacetSpecification(); if (facetSpecifyBean.getSpecifyFields().length > 0) { query.addFacetField(facetSpecifyBean.getSpecifyFields()); } query.setStart(this.getPageStart()); query.setRows(this.getPageSize()); return query; }
From source file:org.dspace.resourcesync.ResourceSyncAuditService.java
License:BSD License
public List<ResourceSyncEvent> listEvents(Date from, Date to, String scope) { // SolrQuery solrQuery = new SolrQuery(buildTimeQuery(from, to)); SolrQuery solrQuery = new SolrQuery((buildTimeQuery(from, to))); solrQuery.setRows(Integer.MAX_VALUE); solrQuery.addSort(new SortClause(DATETIME_FIELD, ORDER.asc)); solrQuery.addFilterQuery(SCOPES_FIELD + ":" + scope); // solrQuery.addFilterQuery("scope:" + scope); QueryResponse queryResponse;/*www .j ava2s. co m*/ try { queryResponse = getSolr().query(solrQuery); } catch (SolrServerException e) { throw new RuntimeException(e.getMessage(), e); } List<ResourceSyncEvent> listResourceSyncEvent = new ArrayList<ResourceSyncEvent>(); // queryResponse.getResults().iterator().next().get(RESOURCE_ID_FIELD); Iterator<SolrDocument> iterator = queryResponse.getResults().iterator(); while (iterator.hasNext()) { ResourceSyncEvent rse = new ResourceSyncEvent(); SolrDocument sd = iterator.next(); rse.setResource_id((UUID) sd.getFieldValue(RESOURCE_ID_FIELD)); rse.setResource_type((int) sd.getFieldValue(RESOURCE_TYPE_FIELD)); rse.setChangetype((String) sd.getFieldValue(CHANGETYPE_FIELD)); rse.setDatetime((Date) sd.getFieldValue(DATETIME_FIELD)); rse.setScopes((List<String>) sd.getFieldValue(SCOPES_FIELD)); rse.setHandle((String) sd.getFieldValue(HANDLE_FIELD)); rse.setScopes((List<String>) sd.getFieldValue(EXTRA_FIELD)); // System.out.println("+++Resource id = "+rse.getResource_id()+" Resource Type = "+ // rse.getResource_type()+" changeType = "+rse.getChangetype()+ " datetime = "+rse.getDatetime()+ // " scopes = "+rse.getScopes()); listResourceSyncEvent.add(rse); } return listResourceSyncEvent; }
From source file:org.janusgraph.diskstorage.solr.SolrIndex.java
License:Apache License
private void addOrderToQuery(SolrQuery solrQuery, List<IndexQuery.OrderEntry> orders) { for (final IndexQuery.OrderEntry order1 : orders) { final String item = order1.getKey(); final SolrQuery.ORDER order = order1.getOrder() == Order.ASC ? SolrQuery.ORDER.asc : SolrQuery.ORDER.desc;//from www. j av a 2 s . c o m solrQuery.addSort(new SolrQuery.SortClause(item, order)); } }
From source file:org.mycore.solr.search.MCRConditionTransformer.java
License:Open Source License
public static SolrQuery applySortOptions(SolrQuery q, List<MCRSortBy> sortBy) { for (MCRSortBy option : sortBy) { SortClause sortClause = new SortClause(option.getFieldName(), option.getSortOrder() ? ORDER.asc : ORDER.desc); q.addSort(sortClause); }/*from w ww. ja v a 2 s . com*/ return q; }
From source file:org.opengeoportal.harvester.api.client.solr.SolrSearchParams.java
License:Open Source License
/** * Transform the record in {@link SolrQuery} executable by an * {@link org.apache.solr.client.solrj.impl.HttpSolrServer}. * /*from w w w.j a va2s .c o m*/ * @return the {@link SolrQuery} built with the data page this. */ public SolrQuery toSolrQuery() { SolrQuery solrQuery = new SolrQuery(); if (StringUtils.isNotBlank(customSolrQuery)) { solrQuery.setQuery(customSolrQuery); } else { solrQuery.setQuery("*:*"); // data repositories if (dataRepositories != null && dataRepositories.size() > 0) { Criteria institutionCriteria = null; for (String institution : dataRepositories) { if (institutionCriteria == null) { institutionCriteria = new Criteria(SolrRecord.INSTITUTION).is(institution); } else { institutionCriteria = institutionCriteria .or(new Criteria(SolrRecord.INSTITUTION).is(institution)); } } SimpleQuery query = new SimpleQuery(institutionCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } else { solrQuery.addFilterQuery(SolrRecord.INSTITUTION + ":*"); } // theme keywords if (StringUtils.isNotBlank(themeKeyword)) { solrQuery.addFilterQuery(SolrRecord.THEME_KEYWORDS + ":" + themeKeyword); solrQuery.add(PF, SolrRecord.THEME_KEYWORDS + ":'" + themeKeyword + "'^9.0"); solrQuery.add(PF, SolrRecord.LAYER_DISPLAY_NAME + ":'" + themeKeyword + "'^9.0"); } if (StringUtils.isNotBlank(placeKeyword)) { solrQuery.addFilterQuery(SolrRecord.PLACE_KEYWORDS + ":" + placeKeyword); solrQuery.add(PF, SolrRecord.PLACE_KEYWORDS + ":'" + placeKeyword + "'^9.0"); } if (StringUtils.isNotBlank(topicCategory)) { solrQuery.addFilterQuery(SolrRecord.ISO_TOPIC_CATEGORY + ":" + this.topicCategory); } if (dateFrom != null || dateTo != null) { Criteria contentDateCriteria = Criteria.where(SolrRecord.CONTENT_DATE).between(dateFrom, dateTo); SimpleQuery query = new SimpleQuery(contentDateCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } if (StringUtils.isNotBlank(originator)) { String originatorCriteria = splitAndConcatenateUsingOperator(Operator.AND, SolrRecord.ORIGINATOR, originator); solrQuery.addFilterQuery(originatorCriteria); solrQuery.add(PF, SolrRecord.ORIGINATOR + ":" + originator); } if (dataTypes != null && dataTypes.size() > 0) { StringBuilder concatenatedType = new StringBuilder(); for (DataType dType : dataTypes) { concatenatedType.append(dType.toString().replace(" ", "+")).append(" "); } String dataTypeCriteria = splitAndConcatenateUsingOperator(Operator.OR, SolrRecord.DATA_TYPE, concatenatedType.toString()); solrQuery.add("fq", dataTypeCriteria); } if (excludeRestrictedData) { solrQuery.addFilterQuery(SolrRecord.ACCESS + ":" + AccessLevel.Public); } if (fromSolrTimestamp != null || toSolrTimestamp != null) { Criteria solrTimestampCriteria = Criteria.where(SolrRecord.TIMESTAMP).between(fromSolrTimestamp, toSolrTimestamp); SimpleQuery query = new SimpleQuery(solrTimestampCriteria); DefaultQueryParser parser = new DefaultQueryParser(); String queryString = parser.getQueryString(query); solrQuery.addFilterQuery(queryString); } // Add bbox filter only if user has not specified a custom solr // query. buildBoundigBoxQuery(solrQuery); String synonymsFilter = generateSynonymsQuery(); if (StringUtils.isNotBlank(synonymsFilter)) { solrQuery.addFilterQuery(synonymsFilter); } } solrQuery.setRows(pageSize); solrQuery.setStart(page * pageSize); solrQuery.addSort(SortClause.desc("score")); return solrQuery; }
From source file:org.rsc.liferay.solr.SolrIndexSearcher.java
License:Open Source License
protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end) throws Exception { QueryConfig queryConfig = query.getQueryConfig(); SolrQuery solrQuery = new SolrQuery(); if (queryConfig.isHighlightEnabled()) { solrQuery.setHighlight(true);/*from www . j av a 2s.c om*/ solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize()); solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize()); String localizedContentName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.CONTENT); String localizedTitleName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.TITLE); solrQuery.setParam("hl.fl", Field.CONTENT, localizedContentName, Field.TITLE, localizedTitleName); } solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); QueryTranslatorUtil.translateForSolr(query); String queryString = query.toString(); StringBundler sb = new StringBundler(6); sb.append(queryString); sb.append(StringPool.SPACE); sb.append(StringPool.PLUS); sb.append(Field.COMPANY_ID); sb.append(StringPool.COLON); sb.append(companyId); solrQuery.setQuery(sb.toString()); if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) { solrQuery.setRows(0); } else { solrQuery.setRows(end - start); solrQuery.setStart(start); } if (sorts != null) { for (Sort sort : sorts) { if (sort == null) { continue; } String sortFieldName = sort.getFieldName(); if (DocumentImpl.isSortableTextField(sortFieldName)) { sortFieldName = DocumentImpl.getSortableFieldName(sortFieldName); } ORDER order = ORDER.asc; if (Validator.isNull(sortFieldName) || !sortFieldName.endsWith("sortable")) { sortFieldName = "score"; order = ORDER.desc; } if (sort.isReverse()) { order = ORDER.desc; } solrQuery.addSort(new SortClause(sortFieldName, order)); } } return solrQuery; }
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 w w w .j a v a2 s .c o 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:se.simonsoft.cms.indexing.xml.HandlerXmlIntegrationTest.java
License:Apache License
/** * Test covering the search algorithm actually implemented in CMS 3.0. * The joins is performed on RID to match the Sha1 on the Release side while the Translation is the "primary" side of the join. * @throws SolrServerException//from w ww . j a v a2 s . co m */ @Test public void testJoinReleasetranslationRidSha1() throws SolrServerException { FilexmlSourceClasspath repoSource = new FilexmlSourceClasspath( "se/simonsoft/cms/indexing/xml/datasets/releasetranslation"); CmsRepositoryFilexml repo = new CmsRepositoryFilexml("http://localtesthost/svn/testaut1", repoSource); FilexmlRepositoryReadonly filexml = new FilexmlRepositoryReadonly(repo); SolrServer reposxml = indexing.enable(new ReposTestBackendFilexml(filexml)).getCore("reposxml"); // search for the first title SolrDocumentList findUsingRid = reposxml .query(new SolrQuery("a_cms.rid:2gyvymn15kv0001 AND -prop_abx.TranslationLocale:*")).getResults(); assertEquals("Should find the first title in the release (though actually a future one)", 1, findUsingRid.getNumFound()); String wantedReleaseSha1 = (String) findUsingRid.get(0).getFieldValue("c_sha1_source_reuse"); String locale = "sv-SE"; // this join does not know that the remote element is actually in a Release // it could be another not-yet-translated translation, but that would typically not be an issue. SolrQuery query = new SolrQuery("prop_abx.TranslationLocale:" + locale + " AND {!join from=a_cms.rid to=a_cms.rid}c_sha1_source_reuse:" + wantedReleaseSha1); query.addFilterQuery("reusevalue:[1 TO *]"); query.addFilterQuery("patharea:translation"); // Filter on repository and parent path. query.addFilterQuery("repo:" + repo.getName()); query.addFilterQuery("repoparent:" + "\\/svn"); // Prefer higher reuseready integer, prefers Released over other status values. query.addSort(SolrQuery.SortClause.desc("reuseready")); // Prefer the highest RID, i.e. latest finalized. query.addSort(SolrQuery.SortClause.desc("a_cms.rid")); SolrDocumentList findReusevalue = reposxml.query(query).getResults(); assertEquals(1, findReusevalue.getNumFound()); String ridForSourceAndReusereadyLookup = (String) findReusevalue.get(0).getFieldValue("a_cms.rid"); assertEquals("2gyvymn15kv0001", ridForSourceAndReusereadyLookup); assertEquals(1, findReusevalue.get(0).getFieldValue("reuseready")); }