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

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

Introduction

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

Prototype

public SolrQuery setFacet(boolean b) 

Source Link

Document

enable/disable faceting.

Usage

From source file:net.yacy.search.index.ErrorCache.java

License:Open Source License

public ErrorCache(final Fulltext fulltext) {
    this.fulltext = fulltext;
    this.cache = new LinkedHashMap<String, CollectionConfiguration.FailDoc>();
    // concurrently fill stack with latest values
    new Thread() {
        @Override/*  www . ja v  a 2  s.  c om*/
        public void run() {
            final SolrQuery params = new SolrQuery();
            params.setParam("defType", "edismax");
            params.setStart(0);
            params.setRows(1000);
            params.setFacet(false);
            params.setSort(
                    new SortClause(CollectionSchema.last_modified.getSolrFieldName(), SolrQuery.ORDER.desc));
            params.setFields(CollectionSchema.id.getSolrFieldName());
            params.setQuery(
                    CollectionSchema.failreason_s.getSolrFieldName() + AbstractSolrConnector.CATCHALL_DTERM);
            params.set(CommonParams.DF, CollectionSchema.id.getSolrFieldName()); // DisMaxParams.QF or CommonParams.DF must be given
            SolrDocumentList docList;
            try {
                docList = fulltext.getDefaultConnector().getDocumentListByParams(params);
                if (docList != null)
                    for (int i = docList.size() - 1; i >= 0; i--) {
                        SolrDocument doc = docList.get(i);
                        String hash = (String) doc.getFieldValue(CollectionSchema.id.getSolrFieldName());
                        cache.put(hash, null);
                    }
            } catch (IOException e) {
                ConcurrentLog.logException(e);
            }
        }
    }.start();
}

From source file:net.yacy.search.index.ErrorCacheFiller.java

License:Open Source License

/**
 * Fills the error cache with recently failed document hashes found in the index
 *//*from  www  .j  av  a  2s  .c om*/
@Override
public void run() {
    final SolrQuery params = new SolrQuery();
    params.setParam("defType", "edismax");
    params.setStart(0);
    params.setRows(1000);
    params.setFacet(false);
    params.setSort(new SortClause(CollectionSchema.load_date_dt.getSolrFieldName(), SolrQuery.ORDER.desc)); // load_date_dt = faildate
    params.setFields(CollectionSchema.id.getSolrFieldName());
    params.setQuery(CollectionSchema.failreason_s.getSolrFieldName() + AbstractSolrConnector.CATCHALL_DTERM);
    params.set(CommonParams.DF, CollectionSchema.id.getSolrFieldName()); // DisMaxParams.QF or CommonParams.DF must be given
    SolrDocumentList docList;
    try {
        docList = this.sb.index.fulltext().getDefaultConnector().getDocumentListByParams(params);
        if (docList != null)
            for (int i = docList.size() - 1; i >= 0; i--) {
                SolrDocument doc = docList.get(i);
                String hash = (String) doc.getFieldValue(CollectionSchema.id.getSolrFieldName());
                cache.putHashOnly(hash);
            }
    } catch (IOException e) {
        ConcurrentLog.logException(e);
    }
}

From source file:net.yacy.search.query.QueryParams.java

License:Open Source License

private SolrQuery getBasicParams(boolean getFacets, List<String> fqs) {
    final SolrQuery params = new SolrQuery();
    params.setParam("defType", "edismax");
    params.setParam(DisMaxParams.QF, CollectionSchema.text_t.getSolrFieldName() + "^1.0");
    params.setStart(this.offset);
    params.setRows(this.itemsPerPage);
    params.setFacet(false);

    if (this.ranking.coeff_date == RankingProfile.COEFF_MAX) {
        // set a most-recent ordering
        params.setSort(new SortClause(CollectionSchema.last_modified.getSolrFieldName(), SolrQuery.ORDER.desc));
        //params.setSortField(CollectionSchema.last_modified.getSolrFieldName(), ORDER.desc); // deprecated in Solr 4.2
    }/*w w w. j  a  v  a2 s .c  o m*/

    // add site facets
    fqs.addAll(getFacetsFilterQueries());
    if (fqs.size() > 0) {
        params.setFilterQueries(fqs.toArray(new String[fqs.size()]));
    }

    // set facet query attributes
    if (getFacets && this.facetfields.size() > 0) {
        params.setFacet(true);
        params.setFacetMinCount(1);
        params.setFacetLimit(FACETS_STANDARD_MAXCOUNT);
        params.setFacetSort(FacetParams.FACET_SORT_COUNT);
        params.setParam(FacetParams.FACET_METHOD, FacetParams.FACET_METHOD_fcs);
        for (String field : this.facetfields)
            params.addFacetField("{!ex=" + field + "}" + field); // params.addFacetField("{!ex=" + field + "}" + field);
        if (this.facetfields.contains(CollectionSchema.dates_in_content_dts.name())) {
            params.setParam("facet.range", CollectionSchema.dates_in_content_dts.name());
            @SuppressWarnings({ "static-access", "deprecation" })
            String start = TrieDateField
                    .formatExternal(new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L * 3));
            @SuppressWarnings({ "static-access", "deprecation" })
            String end = TrieDateField
                    .formatExternal(new Date(System.currentTimeMillis() + 1000L * 60L * 60L * 24L * 3));
            params.setParam(
                    "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.start",
                    start);
            params.setParam(
                    "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.end", end);
            params.setParam(
                    "f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.range.gap",
                    "+1DAY");
            params.setParam("f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.sort",
                    "index");
            params.setParam("f." + CollectionSchema.dates_in_content_dts.getSolrFieldName() + ".facet.limit",
                    Integer.toString(FACETS_DATE_MAXCOUNT)); // the year constraint should cause that limitation already
        }
        //for (String k: params.getParameterNames()) {ArrayList<String> al = new ArrayList<>(); for (String s: params.getParams(k)) al.add(s); System.out.println("Parameter: " + k + "=" + al.toString());}
        //http://localhost:8090/solr/collection1/select?q=*:*&rows=0&facet=true&facet.field=dates_in_content_dts&f.dates_in_content_dts.facet.limit=730&f.dates_in_content_dts.facet.sort=index
    } else {
        params.setFacet(false);
    }
    params.setFields("*", "score"); // we need the score for post-ranking
    return params;
}

From source file:nl.knaw.dans.common.solr.converter.SolrQueryRequestConverter.java

License:Apache License

public static SolrQuery convert(SearchRequest request) throws SolrSearchEngineException {
    SolrQuery queryObj = new SolrQuery();

    // set query/*from   w  w  w .  j  a  va 2s.com*/
    String query = "";
    String qstr = request.getQuery().getQueryString();
    if (qstr != null)
        query += qstr;
    FieldSet<?> fieldQueries = request.getFieldQueries();
    if (fieldQueries != null) {
        for (Field<?> fieldQuery : fieldQueries) {
            query += fieldQueryToString(fieldQuery) + " ";
        }
    }
    queryObj.setQuery(query);

    // set filter queries
    FieldSet<?> filterQueries = request.getFilterQueries();
    if (filterQueries != null) {
        int i = 0;
        String[] fq = new String[filterQueries.size()];
        for (Field<?> field : filterQueries) {
            fq[i] = fieldQueryToString(field);
            i++;
        }
        queryObj.setFilterQueries(fq);
    }

    // set sort fields
    List<SortField> sortFields = request.getSortFields();
    if (sortFields != null) {
        for (SortField sortField : sortFields) {
            ORDER order;
            if (sortField.getValue().equals(SortOrder.DESC))
                order = ORDER.desc;
            else
                order = ORDER.asc;
            String sortFieldName = sortField.getName();
            if (sortField.getSortType().equals(SortType.BY_RELEVANCE_SCORE))
                sortFieldName = "score";
            queryObj.addSortField(sortFieldName, order);
        }
    }

    // faceting enabled
    Set<String> facetFields = request.getFacetFields();
    boolean enableFaceting = facetFields != null && facetFields.size() > 0;
    queryObj.setFacet(enableFaceting);
    if (enableFaceting) {
        for (String facetField : facetFields) {
            queryObj.addFacetField(facetField);
        }
    }

    // hit highlighting
    queryObj.setHighlight(request.isHighlightingEnabled());

    // paging
    queryObj.setRows(request.getLimit());
    queryObj.setStart(request.getOffset());

    // misc settings
    queryObj.setIncludeScore(true);

    return queryObj;
}

From source file:no.sesat.search.mode.command.SolrSimpleFacetToolkitImpl.java

License:Open Source License

@Override
public void createFacets(final SearchCommand.Context context, final SolrQuery query) {

    final Map<String, Navigator> facets = getSearchConfiguration(context).getFacets();
    query.setFacet(0 < facets.size());

    // facet counters || selection
    for (final Navigator facet : facets.values()) {
        createFacet(context, facet, query);
    }/*  w  w w  .j  a  v a  2  s.  c  om*/
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * Retrieves a simple count using the supplied query 
 * //from   w  ww  .  ja  v a  2  s.com
 * @param query
 * @return
 * @throws SolrServerException
 */
private int doCountQuery(String query) throws Exception {

    logger.info("Count query:  " + query);

    //do a query to retrieve a count
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setFacet(false);
    solrQuery.setFacetMinCount(0);
    solrQuery.setFacetLimit(10000);
    solrQuery.setRows(0);
    solrQuery.setStart(0);
    solrQuery.setQuery(query);

    QueryResponse qr = solrUtils.getSolrServer().query(solrQuery); // can throw exception
    SolrDocumentList sdl = qr.getResults();
    return (int) sdl.getNumFound();
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * Helper method to create SolrQuery object and add facet settings
 *
 * @return solrQuery the SolrQuery//  w  ww. j  a va2  s.  c o m
 */
protected SolrQuery initSolrQuery(String[] facets) {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    if (facets == null) {
        //use the default set
        solrQuery.setFacet(true);
        solrQuery.addFacetField("idxtype");
        solrQuery.addFacetField("australian_s");
        solrQuery.addFacetField("speciesGroup");
        solrQuery.addFacetField("speciesSubgroup");
        //solrQuery.addFacetField("kingdom");
        solrQuery.addFacetField("rank");
        //solrQuery.addFacetField("rankId");
        //solrQuery.addFacetField("pestStatus");
        //        solrQuery.addFacetField("conservationStatus");
        solrQuery.addFacetField("conservationStatusAUS");
        solrQuery.addFacetField("conservationStatusACT");
        solrQuery.addFacetField("conservationStatusNSW");
        solrQuery.addFacetField("conservationStatusNT");
        solrQuery.addFacetField("conservationStatusQLD");
        solrQuery.addFacetField("conservationStatusSA");
        solrQuery.addFacetField("conservationStatusTAS");
        solrQuery.addFacetField("conservationStatusVIC");
        solrQuery.addFacetField("conservationStatusWA");
        solrQuery.addFacetField("category_m_s");
        solrQuery.addFacetField("category_NSW_m_s");
        solrQuery.addFacetField("category_ACT_m_s");
        solrQuery.addFacetField("category_QLD_m_s");
        solrQuery.addFacetField("category_SA_m_s");
        solrQuery.addFacetField("category_NT_m_s");
        solrQuery.addFacetField("category_TAS_m_s");
        solrQuery.addFacetField("category_WA_m_s");
        solrQuery.addFacetField("category_VIC_m_s");
    } else {
        solrQuery.addFacetField(facets);
    }

    solrQuery.setFacetMinCount(1);
    solrQuery.setRows(10);
    solrQuery.setStart(0);

    //add highlights
    solrQuery.setHighlight(true);
    solrQuery.setHighlightFragsize(80);
    solrQuery.setHighlightSnippets(2);
    solrQuery.setHighlightSimplePre("<strong>");
    solrQuery.setHighlightSimplePost("</strong>");
    solrQuery.add("hl.usePhraseHighlighter", "true");
    solrQuery.addHighlightField("commonName");
    solrQuery.addHighlightField("scientificName");
    solrQuery.addHighlightField("pestStatus");
    solrQuery.addHighlightField("conservationStatus");
    solrQuery.addHighlightField("simpleText");
    solrQuery.addHighlightField("content");

    return solrQuery;
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

/**
 * Helper method to create SolrQuery facets for dataset counts
 *
 * @return solrQuery the SolrQuery/*from  w w  w  .  j av a2  s. c  o  m*/
 */
protected SolrQuery initCountsQuery(String facetField) {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQueryType("standard");
    solrQuery.setFacet(true);
    solrQuery.addFacetField(facetField);
    solrQuery.setFacetMinCount(0);
    solrQuery.setFacetLimit(10000);
    solrQuery.setRows(1);
    solrQuery.setStart(0);
    return solrQuery;
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

public Collection getRankingFacetByUserIdAndGuid(String userId, String guid) throws Exception {
    String key = null;//from w w w  . j  a  v  a  2  s. c  om
    String sortField = null;
    try {
        String[] fq = new String[] {};
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQueryType("standard");
        solrQuery.setRows(0);
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(-1); // unlimited = -1

        if (guid == null || guid.length() < 1 || "*".equals(guid)) {
            key = "*";
            solrQuery.addFacetField("guid");
            sortField = "guid";
        } else {
            key = ClientUtils.escapeQueryChars(guid);
            sortField = "superColumnName";
        }
        solrQuery.addFacetField("superColumnName");
        solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND userId:" + userId + " AND guid:" + key);

        SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, sortField, "asc");
        if (qr == null || qr.getFacetResults() == null) {
            return new ArrayList();
        }
        return qr.getFacetResults();
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
        return new ArrayList();
    }
}

From source file:org.ala.dao.FulltextSearchDaoImplSolr.java

License:Open Source License

public Collection getUserIdFacetByGuid(String guid) throws Exception {
    String key = null;//from w w w  .  ja va 2  s  .  c  o m

    try {
        String[] fq = new String[] {};
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQueryType("standard");
        solrQuery.setRows(0);
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(-1); // unlimited = -1

        if (guid == null || guid.length() < 1 || "*".equals(guid)) {
            logger.info("Invalid guid: " + guid);
            return new ArrayList();
        } else {
            key = ClientUtils.escapeQueryChars(guid);
        }
        solrQuery.addFacetField("userId");
        solrQuery.setQuery("idxtype:" + IndexedTypes.RANKING + " AND guid:" + key);

        SearchResultsDTO qr = doSolrQuery(solrQuery, fq, 100, 0, "userId", "asc");
        if (qr == null || qr.getFacetResults() == null) {
            return new ArrayList();
        }
        return qr.getFacetResults();
    } catch (SolrServerException ex) {
        logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex);
        return new ArrayList();
    }
}