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

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

Introduction

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

Prototype

public SolrQuery setFilterQueries(String... fq) 

Source Link

Usage

From source file:at.pagu.soldockr.core.QueryParser.java

License:Apache License

private void appendFilterQuery(SolrQuery solrQuery, List<FilterQuery> filterQueries) {
    if (CollectionUtils.isEmpty(filterQueries)) {
        return;// w  ww  .  java 2s  .  c  om
    }
    List<String> filterQueryStrings = getFilterQueryStrings(filterQueries);

    if (!filterQueryStrings.isEmpty()) {
        solrQuery.setFilterQueries(convertStringListToArray(filterQueryStrings));
    }
}

From source file:bamboo.trove.rule.RuleChangeUpdateManager.java

License:Apache License

private SolrQuery createQuery(String query) {
    SolrQuery q = new SolrQuery("*:*");
    // TODO: Should we add a request handler to the solr cluster to get metrics
    // on the volume and/or performance of these searches in their own bucket?
    q.setFilterQueries(query);
    q.setFields(SOLR_FIELDS);//w  w w . j  a va2s . co m
    q.setSort(SortClause.asc(SolrEnum.ID.toString()));
    q.setRows(solrReadSize);
    return q;
}

From source file:com.comm.sr.service.solr.SolrQueryGenerator.java

@Override
public SolrQuery generateFinalQuery(CommonQuery query) {
    SolrQuery solrQuery = new SolrQuery();
    StringBuilder queryStr = new StringBuilder();
    StringBuilder filterQueryStr = new StringBuilder();

    int pageNum = query.getPageNum();
    if (pageNum < 1) {
        // default first page
        pageNum = 1;//www  . j  a  va 2s. c om
    } else {
        pageNum = query.getPageNum();
    }
    List<QueryItem> queryItems = query.getQueryItems();
    if (queryItems == null) {
        queryItems = Lists.newArrayList();
    }

    List<SortItem> sortItems = query.getSortItems();
    if (sortItems == null) {
        sortItems = Lists.newArrayList();
    }
    for (QueryItem queryItem : queryItems) {
        if (queryItem.isIsFilterType()) {
            String temp = generateQueryStrFromQueryItem(queryItem);
            if (temp != null) {
                filterQueryStr.append(temp + " AND ");

            }
        }
        if (!queryItem.isIsFilterType()) {
            String temp = generateQueryStrFromQueryItem(queryItem);
            if (temp != null) {
                queryStr.append(temp + " AND ");

            }
        }

    }

    for (String functionQueryString : query.getFunctionQuerysList()) {

        queryStr.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND ");

    }
    // check if final queryStr is empty
    if (queryStr.toString().trim().length() == 0) {
        queryStr.append("*:*");
    }

    // delete last AND
    if (queryStr.toString().contains("AND")) {

        int and = queryStr.lastIndexOf("AND");
        queryStr.replace(and, and + 3, "");
    }
    if (filterQueryStr.toString().contains("AND")) {
        int and = filterQueryStr.lastIndexOf("AND");
        filterQueryStr.replace(and, and + 3, "");
    }
    for (SortItem sortItem : sortItems) {
        String fieldName = sortItem.getFieldName();
        String order = sortItem.getSort();

        if (order == null) {
            LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it.");
            continue;
        }
        if (order.trim().equals("asc")) {
            solrQuery.setSort(fieldName, SolrQuery.ORDER.asc);
        }
        if (order.trim().equals("desc")) {
            solrQuery.addSort(fieldName, SolrQuery.ORDER.desc);

        }

    }

    solrQuery.setQuery(queryStr.toString());
    if (filterQueryStr.toString().length() != 0) {
        solrQuery.setFilterQueries(filterQueryStr.toString());

    }

    LOGGER.debug("final queryStr is:" + queryStr.toString() + "");
    LOGGER.debug("filter queryStr is:" + filterQueryStr.toString() + "");
    // //only response userID,score
    // solrQuery.setFields("userID","score");
    for (String fl : query.getFls()) {
        solrQuery.addField(fl);

    }
    int pageSize = query.getPageSize();
    solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize));
    solrQuery.add("rows", String.valueOf(pageSize));
    // if have distance query
    // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location
    String location = query.getLocationPoint();
    Double distance = query.getDistance();

    if (location != null && distance != null) {
        solrQuery.add("d", distance.toString());
        solrQuery.add("pt", location);
        solrQuery.add("sfield", "location");
        solrQuery.add("fq", "_query_:{!geofilt}");
        solrQuery.addSort("geodist()", SolrQuery.ORDER.asc);

    }

    return solrQuery;
}

From source file:com.frank.search.solr.core.DefaultQueryParser.java

License:Apache License

/**
 * Set filter filter queries for//w  w  w  .j  a va  2 s  . c  o  m
 * {@link org.apache.solr.client.solrj.SolrQuery}
 *
 * @param solrQuery
 * @param filterQueries
 */
protected void appendFilterQuery(SolrQuery solrQuery, List<FilterQuery> filterQueries) {
    if (CollectionUtils.isEmpty(filterQueries)) {
        return;
    }
    List<String> filterQueryStrings = getFilterQueryStrings(filterQueries);

    if (!filterQueryStrings.isEmpty()) {
        solrQuery.setFilterQueries(convertStringListToArray(filterQueryStrings));
    }
}

From source file:com.googlecode.solrgeonames.server.GeoServlet.java

License:Open Source License

/**
 * Prepare a 'suggest' query response//  w ww. j a  v  a2  s  .  c  o m
 *
 * @param request The incoming request
 * @param response The response object
 * @throws IOException If errors found
 */
private QueryResponse runQuery(String query, int start, int rows, String fields, String filter, String[] facets,
        int facetLimit) throws Exception {
    SolrQuery q = new SolrQuery();
    q.setQuery(query);
    q.setStart(start);
    q.setRows(rows);
    q.setFields(fields);
    if (filter != null) {
        q.setFilterQueries(filter);
    }
    if (facets != null) {
        q.setFacet(true);
        q.setFacetLimit(facetLimit);
        q.addFacetField(facets);
    } else {
        q.setFacet(false);
    }
    return solrServer.query(q);
}

From source file:com.idealista.solrmeter.statistic.QueryLogStatisticTestCase.java

License:Apache License

private QueryException createQueryException() {
    QueryException queryException = new QueryException();
    SolrQuery query = new SolrQuery();
    query.setQuery("test");
    query.setFilterQueries("field=value");
    query.addFacetQuery("filterQuery=value");
    queryException.setQuery(query);/*from   w ww .  j  a  v a 2 s . c  om*/
    return queryException;
}

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 w  w.  j  ava 2s  . 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.internal.SolrQuerySuggester.java

License:Open Source License

@Override
public String[] suggestKeywordQueries(SearchContext searchContext, int max) throws SearchException {

    SolrQuery solrQuery = new SolrQuery();

    solrQuery.setFilterQueries(getFilterQueries(searchContext, SuggestionConstants.TYPE_QUERY_SUGGESTION));

    StringBundler sb = new StringBundler(6);

    sb.append("start");

    String keywords = searchContext.getKeywords();

    sb.append(keywords.length());//from  w ww.j  a va2  s .  c  o m

    sb.append(StringPool.COLON);
    sb.append(StringPool.QUOTE);
    sb.append(keywords);
    sb.append(StringPool.QUOTE);

    solrQuery.setQuery(sb.toString());

    solrQuery.setRows(max);

    try {
        QueryResponse queryResponse = _solrServer.query(solrQuery);

        SolrDocumentList solrDocumentList = queryResponse.getResults();

        String[] querySuggestions = new String[solrDocumentList.size()];

        for (int i = 0; i < solrDocumentList.size(); i++) {
            SolrDocument solrDocument = solrDocumentList.get(i);

            querySuggestions[i] = (String) solrDocument.getFieldValue(Field.KEYWORD_SEARCH);
        }

        return querySuggestions;
    } catch (Exception e) {
        if (_log.isDebugEnabled()) {
            _log.debug("Unable to execute Solr query", e);
        }

        throw new SearchException(e.getMessage());
    }
}

From source file:com.mmj.app.lucene.solr.utils.BaseSolrQueryConvert.java

License:Open Source License

protected static SolrQuery createSearchQuery(List<String> params, List<String> fiters, SearchQuery searchQuery,
        String... searchHandler) {
    SolrQuery solrQuery = new SolrQuery();
    String query = null;//from  w  w w .j  a va  2 s .  c  o  m
    if (Argument.isEmpty(params)) {
        query = ("*:*");
    } else {
        query = StringUtils.join(params, " AND ");
        if (!StringUtils.join(params.toArray()).contains("*")) {
            if (Argument.isNotEmptyArray(searchHandler)) {
                solrQuery.setRequestHandler(
                        StringUtils.isEmpty(searchHandler[0]) ? "/select" : searchHandler[0]);
            }

        }
    }
    if (Argument.isNotEmpty(fiters)) {
        solrQuery.setFilterQueries(StringUtils.join(fiters, " AND "));
    }
    solrQuery.setQuery(query);
    solrQuery.setStart(searchQuery.getStart());
    solrQuery.setRows(searchQuery.getRows());
    if (StringUtils.isNotBlank(searchQuery.getSortFiled())) {
        solrQuery.addSort(searchQuery.getSortFiled(), searchQuery.getOrderBy());
    }
    return solrQuery;
}

From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java

License:Open Source License

public List<IceCream> searchIceCreams(String name, String flavor, String text, int start, int rows,
        String orderByCol, String orderByType) throws PortalException, SystemException {
    if (_log.isDebugEnabled()) {
        _log.debug("searchIceCreams()");
    }//from w  ww  . j a va 2  s.c  om
    List<IceCream> iceCreams = new ArrayList<IceCream>();
    String activeServerURL = SolrUtil.getActiveSolrServer();
    try {
        CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerURL);
        SolrQuery query = new SolrQuery();

        query.setQuery(getQuery());
        List<String> filterQueries = getFilterQueries(name, flavor, text);
        for (String fq : filterQueries) {
            query.setFilterQueries(fq);
        }

        query.setStart(start);
        query.setRows(rows);

        QueryResponse response = server.query(query);

        List<SolrResponse> searchResults = response.getBeans(SolrResponse.class);
        for (SolrResponse result : searchResults) {
            String iceCreamId = result.getEntryClassPK();
            IceCream iceCream = iceCreamPersistence.findByPrimaryKey(Long.parseLong(iceCreamId));
            iceCreams.add(iceCream);
        }
    } catch (MalformedURLException e) {
        if (_log.isDebugEnabled()) {
            _log.debug(e.getMessage());
        }
        throw new SystemException(e);
    } catch (SolrServerException e) {
        if (_log.isDebugEnabled()) {
            _log.debug(e.getMessage());
        }
        throw new SystemException(e);
    }

    return iceCreams;
}