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

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

Introduction

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

Prototype

public ModifiableSolrParams add(String name, String... val) 

Source Link

Document

Add the given values to any existing name

Usage

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * @see au.org.ala.biocache.dao.SearchDAO#searchPivot(au.org.ala.biocache.dto.SpatialSearchRequestParams)
 *//*from   w ww.j a v a2 s.  co m*/
public List<FacetPivotResultDTO> searchPivot(SpatialSearchRequestParams searchParams) throws Exception {
    String pivot = StringUtils.join(searchParams.getFacets(), ",");
    searchParams.setFacets(new String[] {});

    queryFormatUtils.formatSearchQuery(searchParams);
    String queryString = searchParams.getFormattedQuery();
    searchParams.setFacet(true);

    //get facet group counts
    SolrQuery query = initSolrQuery(searchParams, false, null);
    query.setQuery(queryString);
    query.setFields(null);
    //now use the supplied facets to add groups to the query
    query.add("facet.pivot", pivot);
    query.add("facet.pivot.mincount", "1");
    query.add("facet.missing", "true");
    query.setRows(0);
    searchParams.setPageSize(0);
    QueryResponse response = runSolrQuery(query, searchParams);
    NamedList<List<PivotField>> result = response.getFacetPivot();

    List<FacetPivotResultDTO> output = new ArrayList();
    for (Entry<String, List<PivotField>> pfl : result) {
        List<PivotField> list = pfl.getValue();
        if (list != null && list.size() > 0) {
            output.add(new FacetPivotResultDTO(list.get(0).getField(), getFacetPivotResults(list), null,
                    (int) response.getResults().getNumFound()));
        }

        //should only be one result
        break;
    }

    return output;
}

From source file:au.org.ala.biocache.dao.SearchDAOImpl.java

License:Open Source License

/**
 * @see au.org.ala.biocache.dao.SearchDAO#searchStat
 *//*from  w  ww. j a  va 2s  . co m*/
public List<FieldStatsItem> searchStat(SpatialSearchRequestParams searchParams, String field, String facet)
        throws Exception {
    searchParams.setFacets(new String[] {});

    queryFormatUtils.formatSearchQuery(searchParams);
    String queryString = searchParams.getFormattedQuery();

    if (facet != null)
        searchParams.setFacet(true);

    //get facet group counts
    SolrQuery query = initSolrQuery(searchParams, false, null);
    query.setQuery(queryString);
    query.setFields(null);
    //query.setFacetLimit(-1);

    //stats parameters
    query.add("stats", "true");
    if (facet != null)
        query.add("stats.facet", facet);
    query.add("stats.field", field);

    query.setRows(0);
    searchParams.setPageSize(0);
    QueryResponse response = runSolrQuery(query, searchParams);

    List<FieldStatsItem> output = new ArrayList();
    if (facet != null && response.getFieldStatsInfo().size() > 0) {
        for (FieldStatsInfo f : response.getFieldStatsInfo().values().iterator().next().getFacets().values()
                .iterator().next()) {
            FieldStatsItem item = new FieldStatsItem(f);
            if (f.getName() == null) {
                item.setFq("-" + facet + ":*");
            } else {
                item.setFq(facet + ":\"" + f.getName() + "\"");
            }
            item.setLabel(f.getName());
            output.add(item);
        }
    } else {
        if (response.getFieldStatsInfo().size() > 0) {
            output.add(new FieldStatsItem(response.getFieldStatsInfo().values().iterator().next()));
        }
    }

    return output;
}

From source file:com.bindez.nlp.extract.ngram.corpus.MyanmarCorpusTask.java

@Override
public TermResult call() throws Exception {
    TermResult result = new TermResult();
    HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer();

    SolrQuery query = new SolrQuery();
    query.set("q", "word:" + term);
    query.add("fl", "fl:totaltermfreq(word," + term + ")");
    QueryResponse response = server.query(query);
    SolrDocumentList results = response.getResults();
    for (SolrDocument result1 : results) {
        String count = result1.getFieldValue("fl").toString();
        result.setTerm(term);//from   w  w w  . j a  v  a 2  s . c om
        result.setFrequency(Long.parseLong(count));

    }

    return result;
}

From source file:com.bindez.nlp.extract.ngram.term_frequency.TermFrequency.java

public List<Word> query(Set<String> words) throws SolrServerException {
    List<Word> result = new ArrayList<Word>();
    server = new SolrServer().getSolrServer();
    for (String word : words) {
        SolrQuery query = new SolrQuery();
        query.set("q", "content:" + word);
        query.add("fl", "fl:totaltermfreq(content," + word + ")");
        query.set("rows", 1);
        QueryResponse response = server.query(query);
        SolrDocumentList results = response.getResults();
        for (SolrDocument result1 : results) {
            String count = result1.getFieldValue("fl").toString();
            Word w = new Word(word, Integer.parseInt(count));
            result.add(w);//w w w .  jav a2s.com
        }

    }

    return result;
}

From source file:com.bindez.nlp.extract.ngram.term_frequency.TermFrequencyTask.java

@Override
public TermResult call() throws Exception {
    TermResult result = new TermResult();
    HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer();
    /*/*from w  w  w .  ja  v  a 2 s.  co m*/
        SolrQuery query = new SolrQuery();
        query.setRequestHandler("/terms");
        query.set("terms.fl", "content");
        query.set("terms.regex", term) ;
        query.set("terms", "true");
        query.set("shards.qt","/terms");
        query.set("distrib", "true");
        QueryResponse response = server.query(query);
        TermsResponse termsRes = response.getTermsResponse();
        List<TermsResponse.Term> terms= termsRes.getTerms("content");
                
        TermsResponse.Term solrTerm = null ;
        if(terms != null && terms.size() > 0){
         solrTerm = terms.get(0);
         result.setTerm(term);
         result.setFrequency(solrTerm.getFrequency());
        }else{
            result.setTerm(term);
            result.setFrequency(0);
        }
    */

    SolrQuery query = new SolrQuery();
    query.set("q", "content:" + term);
    query.add("fl", "fl:totaltermfreq(content," + term + ")");
    QueryResponse response = server.query(query);
    SolrDocumentList results = response.getResults();
    for (SolrDocument result1 : results) {
        String count = result1.getFieldValue("fl").toString();
        result.setTerm(term);
        result.setFrequency(Long.parseLong(count));

    }

    return result;
}

From source file:com.bindez.nlp.extract.segmentor.WordSegmentorNgramTask.java

@Override
public TermResult call() throws Exception {
    TermResult result = new TermResult();
    HttpSolrServer tfServer = this.server; //SolrServer.getSolrServer();

    SolrQuery query = new SolrQuery();
    query.set("q", "content:" + term);
    query.add("fl", "fl:totaltermfreq(content," + term + ")");
    QueryResponse response = server.query(query);
    SolrDocumentList results = response.getResults();
    for (SolrDocument result1 : results) {
        String count = result1.getFieldValue("fl").toString();
        result.setTerm(term);/*from   ww w. jav  a 2 s  .c o  m*/
        result.setFrequency(Long.parseLong(count));

    }

    return result;
}

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

@Override
public SolrQuery generateFinalQuery(SolrCommonQuery query_) {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("collection", query_.getCollectionName());
    SubQuery query = query_.getSubQuery();
    if (query == null) {
        return solrQuery;
    }//w w w .jav a  2s.c o m
    StringBuffer solrQueryBuffer = new StringBuffer();
    makeFinalSolrQuery(query, solrQueryBuffer);

    int pageNum = query_.getPageNum();
    if (pageNum < 1) {
        // default first page
        pageNum = 1;
    } else {
        pageNum = query_.getPageNum();
    }
    List<SortItem> sortItems = query_.getSortItems();
    if (sortItems == null) {
        sortItems = Lists.newArrayList();
    }
    for (String functionQueryString : query_.getFunctionQuerysList()) {

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

    }
    if (solrQueryBuffer.toString().contains("AND")) {

        int and = solrQueryBuffer.lastIndexOf("AND");
        solrQueryBuffer.replace(and, and + 3, "");
    }
    if (solrQueryBuffer.toString().trim().length() == 0) {
        solrQueryBuffer.append("*:*");
    }
    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);

        }

    }

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

    }
    LOGGER.info(solrQueryBuffer.toString());
    solrQuery.setQuery(solrQueryBuffer.toString());

    return solrQuery;
}

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;/* ww  w . j  a v  a  2 s .c o  m*/
    } 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.databasepreservation.visualization.utils.SolrUtils.java

private static void setQueryFacetParameter(SolrQuery query, SimpleFacetParameter facetParameter) {
    query.addFacetField(facetParameter.getName());
    if (facetParameter.getMinCount() != FacetParameter.DEFAULT_MIN_COUNT) {
        query.add(String.format("f.%s.facet.mincount", facetParameter.getName()),
                String.valueOf(facetParameter.getMinCount()));
    }/*from   w  w w . j a  va2 s.com*/
    if (facetParameter.getLimit() != SimpleFacetParameter.DEFAULT_LIMIT) {
        query.add(String.format("f.%s.facet.limit", facetParameter.getName()),
                String.valueOf(facetParameter.getLimit()));
    }
}

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

License:Apache License

private void processStatsOptions(SolrQuery solrQuery, Query query) {
    StatsOptions statsOptions = query.getStatsOptions();

    if (statsOptions == null || (CollectionUtils.isEmpty(statsOptions.getFields())
            && CollectionUtils.isEmpty(statsOptions.getFacets())
            && CollectionUtils.isEmpty(statsOptions.getSelectiveFacets()))) {
        return;//from  www . jav a 2 s . c  om
    }

    solrQuery.set(StatsParams.STATS, true);

    for (Field field : statsOptions.getFields()) {
        solrQuery.add(StatsParams.STATS_FIELD, field.getName());

        String selectiveCalcDistinctParam = CommonParams.FIELD + "." + field.getName() + "."
                + StatsParams.STATS_CALC_DISTINCT;
        Boolean selectiveCountDistincts = statsOptions.isSelectiveCalcDistincts(field);

        if (selectiveCountDistincts != null) {
            solrQuery.add(selectiveCalcDistinctParam, String.valueOf(selectiveCountDistincts.booleanValue()));
        }

    }

    for (Field field : statsOptions.getFacets()) {
        solrQuery.add(StatsParams.STATS_FACET, field.getName());
    }

    for (Entry<Field, Collection<Field>> entry : statsOptions.getSelectiveFacets().entrySet()) {

        Field field = entry.getKey();
        String prefix = CommonParams.FIELD + "." + field.getName() + ".";

        String paramName = prefix + StatsParams.STATS_FACET;
        for (Field facetField : entry.getValue()) {
            solrQuery.add(paramName, facetField.getName());
        }

    }

}