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

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

Introduction

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

Prototype

public SolrQuery setIncludeScore(boolean includeScore) 

Source Link

Usage

From source file:org.ambraproject.search.service.SolrSearchService.java

License:Apache License

private SolrQuery createKeywordFacetQuery(String queryString) {
    SolrQuery query = new SolrQuery();
    query.setTimeAllowed(queryTimeout);/*from   w w w  . j  av a2  s  .c om*/
    query.setIncludeScore(false);
    query.setHighlight(false);
    query.setRows(0);
    query.set("defType", "dismax");
    query.set("qf", "doc_partial_body");
    query.addFacetField("doc_partial_type");
    query.setFacetLimit(MAX_FACET_SIZE);
    query.setFacetMinCount(MIN_FACET_COUNT);
    // Add a filter to ensure that Solr never returns partial documents
    query.addFilterQuery(createFilterPartialDocuments());
    query.setQuery(queryString);

    return query;
}

From source file:org.ambraproject.service.feed.FeedServiceImpl.java

License:Apache License

@Override
public Document getSearchArticles(final FeedSearchParameters sParams) throws ApplicationException {

    log.debug("Performing RSS Feed Search");

    SolrQuery query = null;

    if (sParams.getUnformattedQuery().equals("")) {
        log.debug("Simple Rss Search performed on the String: " + sParams.getQuery());
        query = new SolrQuery(sParams.getQuery());
        query.set("defType", "dismax");
    } else {//www  .  jav  a2s . co m
        log.debug("Simple Rss Search performed on the String: " + sParams.getUnformattedQuery());
        query = new SolrQuery(sParams.getUnformattedQuery());
    }

    query.setTimeAllowed(queryTimeout);
    query.setIncludeScore(true); // The relevance (of each results element) to the search terms.
    query.setHighlight(false);
    // request only fields that we need
    query.setFields("id", "title_display", "publication_date", "author_without_collab_display",
            "author_collab_only_display", "author_display", "volume", "issue", "article_type",
            "subject_hierarchy", "abstract_primary_display", "copyright");
    query.addFilterQuery("doc_type:full");
    query.addFilterQuery("!article_type_facet:\"Issue Image\"");
    query.addFacetField("cross_published_journal_key");

    // Form field description: "Journals".  Query Filter.
    if (sParams.getFilterJournals() != null && sParams.getFilterJournals().length > 0) {
        query.addFilterQuery(createFilterLimitForJournals(sParams.getFilterJournals()));
    }

    // Form field description: "Subject Categories".  Query Filter.
    if (sParams.getFilterSubjects() != null && sParams.getFilterSubjects().length > 0) {
        query.addFilterQuery(createFilterLimitForSubject(sParams.getFilterSubjects()));
    }

    // Form field description: "Article Types".  Query Filter.
    if (sParams.getFilterArticleType() != null && sParams.getFilterArticleType().length > 0) {
        query.addFilterQuery(createFilterLimitForArticleType(sParams.getFilterArticleType()));
    }

    //Set the sort ordering for results, if applicable.
    setSort(query, sParams);

    //If the keywords parameter is specified, we need to change what field we're querying against
    //aka, body, conclusions, materials and methods ... etc ...
    if (sParams.getFilterKeyword().length() > 0) {
        String fieldkey = sParams.getFilterKeyword();

        if (!validKeywords.containsKey(fieldkey)) {
            throw new ApplicationException("Invalid filterKeyword value of " + fieldkey + " specified");
        }
        String fieldName = (String) validKeywords.get(fieldkey);
        query.set("qf", fieldName);
    }

    query.set("wt", "xml");

    Document result = null;
    try {
        result = solrHttpService.makeSolrRequestForRss(query.toString());
    } catch (SolrException e) {
        e.printStackTrace();
    }
    return result;
}

From source file:org.ambraproject.service.search.SolrSearchService.java

License:Apache License

private SolrQuery createQuery(String queryString, int startPage, int pageSize, boolean useDismax) {
    SolrQuery query = new SolrQuery(queryString);
    query.setTimeAllowed(queryTimeout);/*from   w  ww . ja  va 2 s .  co m*/
    query.setIncludeScore(true); // The relevance (of each results element) to the search terms.
    query.setHighlight(false);

    if (useDismax) {
        query.set("defType", "dismax");
    }

    //TODO: Put The "options" from the "queryField" picklist into a config file.
    //This list matches the "options" from the "queryField" picklist on unformattedSearch.ftl,
    //without the "date" fields.

    query.setStart(startPage * pageSize); // Which results element to return first in this batch.
    query.setRows(pageSize); // The number of results elements to return.
    // request only fields that we need to display
    query.setFields("id", "score", "title_display", "publication_date", "eissn", "journal", "article_type",
            "author_display", "abstract", "abstract_primary_display", "striking_image", "figure_table_caption",
            "subject", "expression_of_concern", "retraction");
    query.addFacetField("subject_facet");
    query.addFacetField("author_facet");
    query.addFacetField("editor_facet");
    query.addFacetField("article_type_facet");
    query.addFacetField("affiliate_facet");
    query.set("facet.method", "fc");
    query.setFacetLimit(MAX_FACET_SIZE);
    query.setFacetMinCount(MIN_FACET_COUNT);
    // Add a filter to ensure that Solr never returns partial documents
    query.addFilterQuery(createFilterFullDocuments());

    return query;
}

From source file:org.ambraproject.service.search.SolrSearchService.java

License:Apache License

private SolrQuery createFacetsQuery(String queryString, String field, boolean useDismax) {
    SolrQuery query = new SolrQuery(queryString);
    query.setTimeAllowed(queryTimeout);// w ww.  j ava  2s  . co m
    query.setIncludeScore(false);
    query.setHighlight(false);
    query.setRows(0);
    query.setFacetLimit(MAX_FACET_SIZE);
    query.setFacetMinCount(MIN_FACET_COUNT);

    if (useDismax) {
        query.set("defType", "dismax");
    }

    query.addFacetField(field);
    // Add a filter to ensure that Solr never returns partial documents
    query.addFilterQuery(createFilterFullDocuments());

    return query;
}

From source file:org.apache.jena.query.text.TextIndexSolr.java

License:Apache License

private SolrDocumentList solrQuery(String qs, int limit) {
    SolrQuery sq = new SolrQuery(qs);
    sq.setIncludeScore(true);
    if (limit > 0)
        sq.setRows(limit);/*from  w w  w  .  ja va 2s .c o m*/
    else
        sq.setRows(MAX_N); // The Solr default is 10.
    try {
        // Set default field.
        sq.add(CommonParams.DF, docDef.getPrimaryField());
        QueryResponse rsp = solrServer.query(sq);
        SolrDocumentList docs = rsp.getResults();
        return docs;
    } catch (SolrServerException e) {
        exception(e);
        return null;
    }
}

From source file:org.entrystore.repository.util.SolrSupport.java

License:Apache License

public QueryResult sendQuery(SolrQuery query) {
    Set<URI> entries = new LinkedHashSet<URI>();
    Set<Entry> result = new LinkedHashSet<Entry>();
    long hits = -1;
    int limit = query.getRows();
    int offset = query.getStart();
    query.setIncludeScore(true);
    int resultFillIteration = 0;
    do {//from   w w w .  j av a  2  s  . co m
        if (resultFillIteration++ > 0) {
            if (resultFillIteration > 10) {
                log.warn("Breaking after 10 result fill interations to prevent too many loops");
                break;
            }
            offset += 10;
            log.warn("Increasing offset to fill the result limit");
        }
        hits = sendQueryForEntryURIs(query, entries, solrServer, offset, -1);
        Date before = new Date();
        for (URI uri : entries) {
            try {
                Entry entry = rm.getContextManager().getEntry(uri);
                if (entry != null) {
                    PrincipalManager pm = entry.getRepositoryManager().getPrincipalManager();
                    // If linkReference or reference to a entry in the same
                    // repository
                    // check that the referenced metadata is accessible.
                    if ((entry.getEntryType() == EntryType.Reference
                            || entry.getEntryType() == EntryType.LinkReference)
                            && entry.getCachedExternalMetadata() instanceof LocalMetadataWrapper) {
                        Entry refEntry = entry.getRepositoryManager().getContextManager()
                                .getEntry(entry.getExternalMetadataURI());
                        pm.checkAuthenticatedUserAuthorized(refEntry, AccessProperty.ReadMetadata);
                    } else {
                        // Check that the local metadata is accessible.
                        pm.checkAuthenticatedUserAuthorized(entry, AccessProperty.ReadMetadata);
                    }
                    result.add(entry);
                    if (result.size() == limit) {
                        // we have enough results
                        break;
                    }
                }
            } catch (AuthorizationException ae) {
                hits--;
                continue;
            }
        }
        log.info("Entry fetching took " + (new Date().getTime() - before.getTime()) + " ms");
    } while ((limit > result.size()) && (hits > (offset + limit)));

    return new QueryResult(result, hits);
}

From source file:org.mycore.solr.search.MCRConditionTransformer.java

License:Open Source License

public static SolrQuery getSolrQuery(@SuppressWarnings("rawtypes") MCRCondition condition,
        List<MCRSortBy> sortBy, int maxResults) {
    String queryString = getQueryString(condition);
    SolrQuery q = applySortOptions(new SolrQuery(queryString), sortBy);
    q.setIncludeScore(true);
    q.setRows(maxResults == 0 ? Integer.MAX_VALUE : maxResults);

    String sort = q.getSortField();
    LOGGER.info("Legacy Query transformed to: " + q.getQuery() + (sort != null ? " " + sort : ""));
    return q;//from  w  w  w . j a v  a2 s . c  om
}

From source file:org.obm.service.calendar.ContactService.java

License:Open Source License

public Set<Integer> searchContactIds(AccessToken token, String query, Collection<AddressBook> addrBooks,
        Integer limit, Integer offset) throws LocatorClientException {
    Set<Integer> contactIds = new HashSet<Integer>();

    if (addrBooks.size() > 0) {
        SolrHelper solrHelper = solrHelperFactory.createClient(token);
        CommonsHttpSolrServer solrServer = solrHelper.getSolrContact();
        StringBuilder sb = new StringBuilder();
        sb.append("-is:archive ");
        sb.append("+addressbookId:(");
        int idx = 0;
        for (AddressBook book : addrBooks) {
            if (idx > 0) {
                sb.append(" OR ");
            }/*from  w w w  . ja  v a  2 s  .co m*/
            sb.append(book.getUid());
            idx++;
        }
        sb.append(")");
        if (query != null && !"".equals(query)) {
            sb.append(" +(displayname:(");
            sb.append(query.toLowerCase());
            sb.append("*) OR firstname:(");
            sb.append(query.toLowerCase());
            sb.append("*) OR lastname:(");
            sb.append(query.toLowerCase());
            sb.append("*) OR email:(");
            sb.append(query.toLowerCase());
            sb.append("*))");
        }
        SolrQuery params = new SolrQuery();
        params.setQuery(sb.toString());
        params.setIncludeScore(true);
        params.setRows(limit);
        params.setStart(offset);

        try {
            QueryResponse resp = solrServer.query(params);

            SolrDocumentList results = resp.getResults();
            if (logger.isDebugEnabled()) {
                logger.debug(
                        "SOLR query time for " + results.size() + " results: " + resp.getElapsedTime() + "ms.");
            }

            for (int i = 0; i < limit && i < results.size(); i++) {
                SolrDocument doc = results.get(i);
                Map<String, Object> payload = doc.getFieldValueMap();
                contactIds.add((Integer) payload.get("id"));
            }
        } catch (SolrServerException e) {
            logger.error("Error querying server for '" + sb.toString() + " url: "
                    + ClientUtils.toQueryString(params, false), e);
        }
    }

    return contactIds;
}

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);/*w  w w  .ja va 2s.com*/
        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.sindice.siren.solr.TestSirenQParserPlugin.java

License:Apache License

/**
 * SRN-96//from  w  ww  .  ja  v  a  2 s. c om
 */
@Test
public void testASCIIFoldingExpansion() throws IOException, SolrServerException {
    this.addNTripleString("id1", "<http://s> <http://p> \"cafe\" .");
    this.addNTripleString("id2", "<http://s> <http://p> \"caf\" .");
    SolrQuery query = new SolrQuery();
    query.setQuery("cafe");
    query.setQueryType("siren");
    query.setIncludeScore(true);

    // should match the two documents, with same score
    QueryResponse response = wrapper.server.query(query);
    SolrDocumentList docList = response.getResults();
    assertEquals(2, docList.getNumFound());
    float score1 = (Float) docList.get(0).getFieldValue("score");
    float score2 = (Float) docList.get(1).getFieldValue("score");
    Assert.assertTrue("Score should be identical", score1 == score2);

    query = new SolrQuery();
    query.setQueryType("siren");
    query.set(SirenParams.NQ, "* * 'cafe'");
    query.setIncludeScore(true);

    // should match the two documents, with same score
    response = wrapper.server.query(query);
    docList = response.getResults();
    assertEquals(2, docList.getNumFound());
    score1 = (Float) docList.get(0).getFieldValue("score");
    score2 = (Float) docList.get(1).getFieldValue("score");
    Assert.assertTrue("Score should be identical", score1 == score2);

    // should match the two documents, but should assign different score
    // id2 should receive better score than id1
    query = new SolrQuery();
    query.setQuery("caf");
    query.setQueryType("siren");
    query.setIncludeScore(true);

    response = wrapper.server.query(query);
    docList = response.getResults();
    assertEquals(2, docList.getNumFound());
    if (docList.get(0).getFieldValue("url").equals("id1")) {
        score1 = (Float) docList.get(0).getFieldValue("score");
        score2 = (Float) docList.get(1).getFieldValue("score");
    } else {
        score2 = (Float) docList.get(0).getFieldValue("score");
        score1 = (Float) docList.get(1).getFieldValue("score");
    }
    Assert.assertTrue("id2 should get higher score than id1", score1 < score2);

    query = new SolrQuery();
    query.setQueryType("siren");
    query.set(SirenParams.NQ, "* * 'caf'");
    query.setIncludeScore(true);

    response = wrapper.server.query(query);
    System.out.println(response);
    docList = response.getResults();
    assertEquals(2, docList.getNumFound());
    if (docList.get(0).getFieldValue("url").equals("id1")) {
        score1 = (Float) docList.get(0).getFieldValue("score");
        score2 = (Float) docList.get(1).getFieldValue("score");
    } else {
        score2 = (Float) docList.get(0).getFieldValue("score");
        score1 = (Float) docList.get(1).getFieldValue("score");
    }
    Assert.assertTrue("id2 should get higher score than id1", score1 < score2);
}