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:com.frank.search.solr.core.SolrTemplate.java

License:Apache License

final QueryResponse query(SolrDataQuery query, Class<?> clazz) {
    Assert.notNull(query, "Query must not be 'null'");

    SolrQuery solrQuery = queryParsers.getForClass(query.getClass()).constructSolrQuery(query);

    if (clazz != null) {
        SolrPersistentEntity<?> persistedEntity = mappingContext.getPersistentEntity(clazz);
        if (persistedEntity.hasScoreProperty()) {
            solrQuery.setIncludeScore(true);
        }//  w ww  . j  a va 2 s  . c o  m
    }

    LOGGER.debug("Executing query '" + solrQuery + "' against solr.");

    return executeSolrQuery(solrQuery);
}

From source file:com.liferay.portal.search.solr.internal.SolrIndexSearcher.java

License:Open Source License

protected QueryResponse doSearch(SearchContext searchContext, Query query, int start, int end, boolean count)
        throws Exception {

    QueryConfig queryConfig = query.getQueryConfig();

    SolrQuery solrQuery = new SolrQuery();

    if (!count) {
        addFacets(solrQuery, searchContext);
        addHighlights(solrQuery, queryConfig);
        addPagination(solrQuery, start, end);
        addSelectedFields(solrQuery, queryConfig);
        addSort(solrQuery, searchContext.getSorts());

        solrQuery.setIncludeScore(queryConfig.isScoreEnabled());
    } else {//from  w  ww . j a  v a2  s  .  co m
        solrQuery.setRows(0);
    }

    String queryString = translateQuery(query, searchContext);

    solrQuery.setQuery(queryString);

    String filterQuery = _filterTranslator.translate(query.getPreBooleanFilter(), searchContext);

    solrQuery.setFilterQueries(filterQuery);

    QueryResponse queryResponse = executeSearchRequest(solrQuery);

    if (_log.isInfoEnabled()) {
        _log.info("The search engine processed " + solrQuery.getQuery() + " in "
                + queryResponse.getElapsedTime() + " ms");
    }

    return queryResponse;
}

From source file:com.liferay.portal.search.solr.SolrIndexSearcher.java

License:Open Source License

protected QueryResponse search(SearchContext searchContext, Query query, int start, int end, boolean count)
        throws Exception {

    SolrQuery solrQuery = new SolrQuery();

    if (count) {/* w w  w .  j  ava2  s  . co  m*/
        solrQuery.setRows(0);
    } else {
        QueryConfig queryConfig = query.getQueryConfig();

        addFacets(solrQuery, searchContext);
        addHighlights(solrQuery, queryConfig);
        addPagination(solrQuery, start, end);
        addSelectedFields(solrQuery, queryConfig);
        addSort(solrQuery, searchContext.getSorts());

        solrQuery.setIncludeScore(queryConfig.isScoreEnabled());
    }

    translateQuery(solrQuery, searchContext, query);

    return _solrServer.query(solrQuery, METHOD.POST);
}

From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.java

License:Open Source License

protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end)
        throws Exception {

    QueryTranslatorUtil.translateForSolr(query);

    String queryString = query.toString();

    QueryConfig queryConfig = query.getQueryConfig();

    SolrQuery solrQuery = new SolrQuery();

    solrQuery.setHighlight(queryConfig.isHighlightEnabled());
    solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize());
    solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize());
    solrQuery.setIncludeScore(queryConfig.isScoreEnabled());
    solrQuery.setQuery(queryString);/*www  .j  a v a 2 s.c  o  m*/

    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) {
        solrQuery.setRows(0);
    } else {
        solrQuery.setRows(end - start);
        solrQuery.setStart(start);
    }

    if ((sorts != null) && (sorts.length > 0)) {
        for (Sort sort : sorts) {
            if (sort == null) {
                continue;
            }

            String sortFieldName = sort.getFieldName();

            if (ArrayUtil.contains(PortletPropsValues.SOLR_SORTABLE_TEXT_FIELDS, sortFieldName)) {

                sortFieldName = GetterUtil.getString(
                        PortletProps.get(PortletPropsKeys.SOLR_COPY_FIELDS, new Filter(sortFieldName)));
            }

            ORDER order = ORDER.asc;

            if (sortFieldName == null) {
                sortFieldName = "score";

                order = ORDER.desc;
            } else if (sort.isReverse()) {
                order = ORDER.desc;
            }

            solrQuery.addSortField(sortFieldName, order);
        }
    }

    return solrQuery;
}

From source file:com.sindicetech.siren.solr.analysis.TestASCIIFoldingExpansionFilterFactory.java

License:Open Source License

/**
 * SRN-96//ww w.ja  va 2 s .c  om
 */
@Test
public void testASCIIFoldingExpansion() throws IOException, SolrServerException {
    this.addJsonString("1", " { \"value\" : \"cafe\" } ");
    this.addJsonString("2", " { \"value\" : \"caf\" } ");
    SolrQuery query = new SolrQuery();
    query.setQuery("cafe");
    query.setRequestHandler("keyword");
    query.setIncludeScore(true);

    // should match the two documents, with same score
    QueryResponse response = getWrapper().getServer().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);

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

    response = getWrapper().getServer().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);
}

From source file:com.smartitengineering.common.dao.search.solr.SolrFreeTextSearchDao.java

License:Open Source License

@Override
public SearchResult<T> detailedSearch(List<QueryParameter> parameters) {
    SolrQuery query = new SolrQuery();
    for (QueryParameter param : parameters) {
        switch (param.getParameterType()) {
        case PARAMETER_TYPE_PROPERTY:
            StringLikeQueryParameter queryParameter = QueryParameterCastHelper.STRING_PARAM_HELPER.cast(param);
            if (queryParameter.getPropertyName().equals("q")) {
                String queryString = queryParameter.getValue();
                query.setQuery(queryString);
            } else {
                query.add(queryParameter.getPropertyName(), queryParameter.getValue());
            }// www.j av  a 2  s  .co m
            break;
        case PARAMETER_TYPE_ORDER_BY:
            SimpleNameValueQueryParameter<Order> parameter = QueryParameterCastHelper.SIMPLE_PARAM_HELPER
                    .cast(param);
            ORDER order = parameter.getValue().equals(Order.ASC) ? ORDER.asc : ORDER.desc;
            query.setSortField(parameter.getPropertyName(), order);
            break;
        case PARAMETER_TYPE_MAX_RESULT:
            ValueOnlyQueryParameter<Integer> valParam = QueryParameterCastHelper.VALUE_PARAM_HELPER.cast(param);
            Integer maxRows = valParam.getValue();
            query.setRows(maxRows);
            break;
        case PARAMETER_TYPE_FIRST_RESULT:
            ValueOnlyQueryParameter<Integer> firstParam = QueryParameterCastHelper.VALUE_PARAM_HELPER
                    .cast(param);
            Integer firstResult = firstParam.getValue();
            query.setStart(firstResult);
            break;
        default:
            throw new UnsupportedOperationException("Only property and order by query parameter is supported!");
        }
    }
    query.setIncludeScore(true);
    final SearchResult<MultivalueMap<String, Object>> mainResult = queryDao.getResult(query);
    final Collection<MultivalueMap<String, Object>> result = mainResult.getResult();
    final Collection<T> convertedResult = adapter
            .convertInversely(result.toArray(new MultivalueMap[result.size()]));
    Iterator<T> resultItr = convertedResult.iterator();
    while (resultItr.hasNext()) {
        T next = resultItr.next();
        if (next == null) {
            resultItr.remove();
        }
    }
    final SearchResult<T> actualResult = new SearchResult<T>(convertedResult, mainResult);
    return actualResult;
}

From source file:de.unidue.inf.is.ezdl.dlwrapper.wrappers.AbstractSolrWrapper.java

License:Open Source License

@Override
public final StoredDocumentList process(DocumentQuery documentQuery) {
    String solrQueryString = queryConverter.convert(documentQuery.getQuery());

    getLogger().info("Query is: " + solrQueryString);

    SolrQuery query = new SolrQuery();
    query.setIncludeScore(true);
    query.setRows(getMaxNumberOfResults());
    query.setQuery(solrQueryString);//from www .  j  a  v a 2s  .c o  m

    try {
        QueryResponse response = server.query(query);
        SolrDocumentList hits = response.getResults();
        StoredDocumentList result = new StoredDocumentList();
        for (int i = 0; (i < hits.size()) && !isHalted(); i++) {
            SolrDocument doc = hits.get(i);
            StoredDocument stored = readDocumentFromSolrIndex(doc);
            result.add(stored);
        }
        if (!isHalted()) {
            return result;
        } else {
            return new StoredDocumentList();
        }
    } catch (SolrServerException e) {
        getLogger().error(e.getMessage(), e);
    }
    return new StoredDocumentList();
}

From source file:de.unidue.inf.is.ezdl.dlwrapper.wrappers.AbstractSolrWrapper.java

License:Open Source License

/**
 * Retrieves Solr document by its id./*www.j  a  v  a2s  . c o m*/
 * 
 * @param id
 *            The id
 * @param field
 *            The id field
 * @return The Solr document with the specified id
 */
protected final SolrDocument retrieveSolrDocumentForId(String id, Field field) {
    SolrQuery query = new SolrQuery();
    query.setIncludeScore(true);
    query.setRows(1);
    QueryNodeCompare queryNodeCompare = new QueryNodeCompare(field, Predicate.EQ, id);
    query.setQuery(queryConverter.convert(new DefaultQuery(queryNodeCompare)));
    QueryResponse response;
    try {
        response = server.query(query);
        SolrDocumentList hits = response.getResults();
        if (hits.size() == 1) {
            return hits.get(0);
        }
    } catch (SolrServerException e) {
        getLogger().error(e.getMessage(), e);
    }
    return null;
}

From source file:edu.usu.sdl.openstorefront.service.SearchServiceImpl.java

License:Apache License

@Override
public List<ComponentSearchView> getSearchItems(SearchQuery query, FilterQueryParams filter) {
    // use for advanced search with And - Or combinations on separate fields
    String queryOperator = " " + SolrAndOr.OR + " ";
    String myQueryString;/* ww  w  . j a v a  2  s.  c  o m*/

    // If incoming query string is blank, default to solar *:* for the full query
    if (StringUtils.isNotBlank(query.getQuery())) {
        StringBuilder queryData = new StringBuilder();

        Field fields[] = SolrComponentModel.class.getDeclaredFields();
        for (Field field : fields) {
            org.apache.solr.client.solrj.beans.Field fieldAnnotation = field
                    .getAnnotation(org.apache.solr.client.solrj.beans.Field.class);
            if (fieldAnnotation != null && field.getType() == String.class) {
                String name = field.getName();
                if (StringUtils.isNotBlank(fieldAnnotation.value())
                        && org.apache.solr.client.solrj.beans.Field.DEFAULT
                                .equals(fieldAnnotation.value()) == false) {
                    name = fieldAnnotation.value();
                }

                queryData.append(SolrEquals.EQUAL.getSolrOperator()).append(name)
                        .append(SolrManager.SOLR_QUERY_SEPERATOR).append(query.getQuery())
                        .append(queryOperator);
            }
        }
        myQueryString = queryData.toString();
        if (myQueryString.endsWith(queryOperator)) {
            queryData.delete((myQueryString.length() - (queryOperator.length())), myQueryString.length());
            myQueryString = queryData.toString();
        }
    } else {
        myQueryString = SolrManager.SOLR_ALL_QUERY;
    }
    log.log(Level.FINER, myQueryString);

    // execute the searchComponent method and bring back from solr a list array
    List<SolrComponentModel> resultsList = new ArrayList<>();
    try {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery(myQueryString);

        // fields to be returned back from solr
        solrQuery.setFields(SolrComponentModel.ID_FIELD, SolrComponentModel.ISCOMPONENT_FIELD);
        solrQuery.setStart(filter.getOffset());
        solrQuery.setRows(filter.getMax());

        Field sortField = ReflectionUtil.getField(new SolrComponentModel(), filter.getSortField());
        if (sortField != null) {
            String sortFieldText = filter.getSortField();
            org.apache.solr.client.solrj.beans.Field fieldAnnotation = sortField
                    .getAnnotation(org.apache.solr.client.solrj.beans.Field.class);
            if (fieldAnnotation != null) {
                sortFieldText = fieldAnnotation.value();
            }
            SolrQuery.ORDER order = SolrQuery.ORDER.desc;
            if (OpenStorefrontConstant.SORT_ASCENDING.equalsIgnoreCase(filter.getSortOrder())) {
                order = SolrQuery.ORDER.asc;
            }
            solrQuery.addSort(sortFieldText, order);
        }

        solrQuery.setIncludeScore(true);

        QueryResponse response = SolrManager.getServer().query(solrQuery);
        SolrDocumentList results = response.getResults();
        DocumentObjectBinder binder = new DocumentObjectBinder();
        resultsList = binder.getBeans(SolrComponentModel.class, results);
    } catch (SolrServerException ex) {
        throw new OpenStorefrontRuntimeException("Search Failed",
                "Contact System Admin.  Seach server maybe Unavailable", ex);
    } catch (Exception ex) {
        log.log(Level.WARNING, "Solr query failed unexpectly; likely bad input.", ex);
    }

    //Pulling the full object on the return
    List<ComponentSearchView> views = new ArrayList<>();

    List<String> componentIds = new ArrayList<>();
    for (SolrComponentModel result : resultsList) {
        if (result.getIsComponent()) {
            componentIds.add(result.getId());
        }
    }

    //remove bad indexes, if any
    List<ComponentSearchView> componentSearchViews = getComponentService().getSearchComponentList(componentIds);
    Set<String> goodComponentIdSet = new HashSet<>();
    for (ComponentSearchView view : componentSearchViews) {
        goodComponentIdSet.add(view.getComponentId());
    }

    for (String componentId : componentIds) {
        if (goodComponentIdSet.contains(componentId) == false) {
            log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", componentId));
            deleteById(componentId);
        }
    }
    views.addAll(componentSearchViews);

    List<ComponentSearchView> articleViews = getAttributeService().getArticlesSearchView();
    Map<String, ComponentSearchView> allViews = new HashMap<>();
    for (ComponentSearchView componentSearchView : articleViews) {
        AttributeCodePk attributeCodePk = new AttributeCodePk();
        attributeCodePk.setAttributeType(componentSearchView.getArticleAttributeType());
        attributeCodePk.setAttributeCode(componentSearchView.getArticleAttributeCode());
        allViews.put(attributeCodePk.toKey(), componentSearchView);
    }
    for (SolrComponentModel result : resultsList) {

        if (result.getIsComponent() == false) {
            ComponentSearchView view = allViews.get(result.getId());
            if (view != null) {
                views.add(view);
            } else {
                log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", result.getId()));
                deleteById(result.getId());
            }
        }
    }

    //TODO: Get the score and sort by score
    return views;
}

From source file:fr.aliacom.obm.common.contact.ContactDao.java

License:Open Source License

private List<Contact> searchContact(AccessToken at, List<AddressBook> addrBooks, Connection con, String querys,
        int limit) throws MalformedURLException, SQLException {
    List<Contact> ret = new LinkedList<Contact>();
    Set<Integer> evtIds = new HashSet<Integer>();

    PreparedStatement ps = null;//from w  ww.j a  v  a  2 s .co  m
    ResultSet rs = null;
    try {
        if (addrBooks.size() > 0) {
            SolrHelper solrHelper = solrHelperFactory.createClient(at);
            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 ");
                }
                sb.append(book.getUid());
                idx++;
            }
            sb.append(")");
            if (querys != null && !"".equals(querys)) {
                sb.append(" +(displayname:(");
                sb.append(querys.toLowerCase());
                sb.append("*) OR firstname:(");
                sb.append(querys.toLowerCase());
                sb.append("*) OR lastname:(");
                sb.append(querys.toLowerCase());
                sb.append("*) OR email:(");
                sb.append(querys.toLowerCase());
                sb.append("*))");
            }
            SolrQuery params = new SolrQuery();
            params.setQuery(sb.toString());
            params.setIncludeScore(true);
            params.setRows(limit);

            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();
                    evtIds.add((Integer) payload.get("id"));
                }
            } catch (SolrServerException e) {
                logger.error("Error querying server for '" + sb.toString() + " url: "
                        + ClientUtils.toQueryString(params, false), e);
            }
        }

        IntegerSQLCollectionHelper eventIds = new IntegerSQLCollectionHelper(evtIds);
        String q = "SELECT " + CONTACT_SELECT_FIELDS + ", now() as last_sync FROM Contact, ContactEntity WHERE "
                + "contactentity_contact_id=contact_id AND contact_archive != 1 AND contact_id IN ("
                + eventIds.asPlaceHolders() + ")";

        ps = con.prepareStatement(q);
        eventIds.insertValues(ps, 1);
        rs = ps.executeQuery();
        Map<Integer, Contact> entityContact = new HashMap<Integer, Contact>();

        int i = 0;
        while (rs.next() && i < limit) {
            int entity = rs.getInt("contactentity_entity_id");
            if (!entityContact.containsKey(entity)) {
                Contact ct = contactFromCursor(rs);
                entityContact.put(ct.getEntityId(), ct);
                ret.add(ct);
                i++;
            }
        }
        rs.close();
        rs = null;

        if (!entityContact.isEmpty()) {
            loadPhones(con, entityContact);
            loadIMIdentifiers(con, entityContact);
            loadWebsites(con, entityContact);
            loadAddresses(at, con, entityContact);
            loadEmails(con, entityContact);
            loadBirthday(con, entityContact);
            loadAnniversary(con, entityContact);
        }

    } finally {
        obmHelper.cleanup(null, ps, rs);
    }
    return ret;
}