Example usage for org.apache.solr.client.solrj SolrQuery addSort

List of usage examples for org.apache.solr.client.solrj SolrQuery addSort

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery addSort.

Prototype

public SolrQuery addSort(SortClause sortClause) 

Source Link

Document

Adds a single sort clause to the end of the query.

Usage

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"));
}