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

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

Introduction

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

Prototype

public SolrQuery() 

Source Link

Usage

From source file:edu.cornell.mannlib.vitro.webapp.search.solr.SolrIndexer.java

License:Open Source License

@Override
public long getModified() {
    long modified = 0;

    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    query.addSortField("indexedTime", SolrQuery.ORDER.desc);

    try {/*from   w w w.j ava 2  s .co  m*/
        QueryResponse rsp = server.query(query);
        SolrDocumentList docs = rsp.getResults();
        if (docs != null) {
            modified = (Long) docs.get(0).getFieldValue("indexedTime");
        }
    } catch (SolrServerException e) {
        log.error(e, e);
    }

    return modified;
}

From source file:edu.cornell.mannlib.vitro.webapp.search.solr.SolrIndexer.java

License:Open Source License

/**
 * Returns true if there are documents in the index, false if there are none,
 * and returns false on failure to connect to server.
 *///from   w w w  .  j a v a 2s .  c om
public boolean isIndexEmpty() {
    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    try {
        QueryResponse rsp = server.query(query);
        SolrDocumentList docs = rsp.getResults();
        if (docs == null || docs.size() == 0) {
            return true;
        }
    } catch (SolrServerException e) {
        log.error("Could not connect to solr server", e.getRootCause());
    }
    return false;
}

From source file:edu.csupomona.ir.solrapplication.Searcher.java

public static void main(String[] args) throws IOException, MalformedURLException, SolrServerException {
    HttpSolrServer solr = new HttpSolrServer("http://localhost:8983/solr");

    SolrQuery param = new SolrQuery();
    param.set("q", "news");
    param.set("rows", "1000");
    //    query.addFilterQuery("cat:electronics","store:amazon.com");
    //    query.setFields("id","price","merchant","cat","store");
    //    param.setStart(0);    
    //    param.set("defType", "edismax");

    Searcher sch = new Searcher();

    QueryResponse response = solr.query(param);
    SolrDocumentList results = response.getResults();

    // parse the result text and obtain term-frequency mapping
    List tf_list = new ArrayList();
    for (int i = 0; i < results.size(); ++i) {
        tf_list.add(sch.parseText(results.get(i).get("content").toString()));
    }/*from   w ww  .  j  a  v a 2s  .c o  m*/

    // write the most significant term-frequency into file
    sch.write(tf_list, "data.txt");

    // test KMeans from Java ML lib
    //        sch.TestKMeansLib(results);

    // test a simple implementation of KMeans
    sch.TestKMeans(results.size());
}

From source file:edu.harvard.gis.hhypermap.bop.SolrUpdateSlammer.java

License:Apache License

private void slam() throws IOException, SolrServerException {
    int docCounter = 0;
    long nanosStart = System.nanoTime();
    for (; Instant.now().isBefore(endInstant); docCounter++) {
        throwIfError();/*from  w w w . j a va 2s .  c om*/
        Instant time = Instant.now().plusMillis(Math.abs(random.nextLong() % nextRandomMillis) - nextShiftBack);
        SolrInputDocument doc = new SolrInputDocument();
        doc.setField("id", docCounter);
        doc.setField("created_at", Date.from(time));
        sendDoc(doc);

        // update time for next lap:

    }
    client.commit(collection);
    throwIfError();
    long nanosEnd = System.nanoTime();
    System.out.println("Added " + docCounter + " docs in " + Duration.ofNanos(nanosEnd - nanosStart));
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery("*:*").setRows(0);
    QueryResponse queryResponse = client.query(collection, solrQuery);
    System.out.println("Found " + queryResponse.getResults().getNumFound());
}

From source file:edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean.java

public List<Long> expandSetQuery(String query) throws OaiSetException {
    // We do not allow "keyword" queries (like "king") - we require
    // that they search on specific fields, for ex., "authorName:king":
    if (query == null || !(query.indexOf(':') > 0)) {
        throw new OaiSetException("Invalid search query.");
    }// w ww . j  a  v a 2  s .c o m
    SolrQuery solrQuery = new SolrQuery();
    String restrictedQuery = addQueryRestrictions(query);

    solrQuery.setQuery(restrictedQuery);

    // addFilterQuery equivalent to addQueryRestrictions
    //        solrQuery.setQuery(query);
    //        solrQuery.addFilterQuery(SearchFields.TYPE + ":" + SearchConstants.DATASETS);
    //        solrQuery.addFilterQuery(SearchFields.IS_HARVESTED + ":" + false);
    //        solrQuery.addFilterQuery(SearchFields.PUBLICATION_STATUS + ":" + IndexServiceBean.PUBLISHED_STRING);

    solrQuery.setRows(Integer.MAX_VALUE);

    QueryResponse queryResponse = null;
    try {
        queryResponse = getSolrServer().query(solrQuery);
    } catch (RemoteSolrException ex) {
        String messageFromSolr = ex.getLocalizedMessage();
        String error = "Search Syntax Error: ";
        String stringToHide = "org.apache.solr.search.SyntaxError: ";
        if (messageFromSolr.startsWith(stringToHide)) {
            // hide "org.apache.solr..."
            error += messageFromSolr.substring(stringToHide.length());
        } else {
            error += messageFromSolr;
        }
        logger.fine(error);
        throw new OaiSetException(error);
    } catch (SolrServerException ex) {
        logger.fine("Internal Dataverse Search Engine Error");
        throw new OaiSetException("Internal Dataverse Search Engine Error");
    }

    SolrDocumentList docs = queryResponse.getResults();
    Iterator<SolrDocument> iter = docs.iterator();
    List<Long> resultIds = new ArrayList<>();

    while (iter.hasNext()) {
        SolrDocument solrDocument = iter.next();
        Long entityid = (Long) solrDocument.getFieldValue(SearchFields.ENTITY_ID);
        resultIds.add(entityid);
    }

    return resultIds;

}

From source file:edu.harvard.lib.lcloud.ItemDAO.java

License:Open Source License

/**
 * Returns a SolrDocumentList for a given set of search parameters. Search parameters are parsed 
 * and mapped into solr (solrj) query syntax, and solr query is performed.
 * @param queryParams query parameters to map to a solr query
 * @return      the SolrDocumentList for this query
 * @see         SolrDocumentList//from  w  ww. ja va  2 s . c o  m
 */

private SolrDocumentList doQuery(MultivaluedMap<String, String> queryParams) {
    SolrDocumentList docs = null;
    HttpSolrServer server = null;
    ArrayList<String> queryList = new ArrayList<String>();
    server = SolrServer.getSolrConnection();
    SolrQuery query = new SolrQuery();
    for (String key : queryParams.keySet()) {
        String value = queryParams.getFirst(key);
        System.out.println(key + " : " + queryParams.getFirst(key) + "\n");
        if (key.equals("start")) {
            int startNo = Integer.parseInt(value);
            if (startNo < 0)
                startNo = 0;
            query.setStart(startNo);
        } else if (key.equals("limit")) {
            limit = Integer.parseInt(value);
            query.setRows(limit);
        } else if (key.equals("sort.asc") || key.equals("sort"))
            query.setSort(value, ORDER.asc);
        else if (key.equals("sort.desc"))
            query.setSort(value, ORDER.desc);
        else if (key.startsWith("facet")) {
            query.setFacet(true);
            String[] facetArray = value.split(",");
            for (String f : facetArray) {
                query.addFacetField(f);
            }
        } else {
            if (key.endsWith("_exact"))
                queryList.add(key.replace("_exact", "") + ":\"" + value + "\"");
            else {
                if (value.contains(" "))
                    value = "( " + value.replaceAll(" ", " AND ") + ")";
                if (key.equals("q"))
                    queryList.add("keyword:" + value);
                else
                    queryList.add(key + "_keyword:" + value);
            }
        }
    }

    Iterator<String> it = queryList.iterator();
    String queryStr = "";
    while (it.hasNext()) {
        String qTerm = (String) it.next();
        System.out.print("QT: " + qTerm + "\n");
        queryStr += qTerm;
        System.out.print("QS: " + queryStr + "\n");
        if (it.hasNext())
            queryStr += " AND ";
    }
    System.out.print("queryStr: " + queryStr);
    query.setQuery(queryStr);
    QueryResponse response = null;
    try {
        response = server.query(query);
    } catch (SolrServerException se) {
        log.error(se.getMessage());
        throw new BadParameterException(se.getMessage());
    } catch (RemoteSolrException rse) {
        if (rse.getMessage().contains("SyntaxError")) {
            log.error("solr syntax error");
            throw new BadParameterException("Incorrect query syntax");
        } else {
            String msg = rse.getMessage().replace("_keyword", "");
            log.error(msg);
            throw new BadParameterException("Incorrect query syntax:" + msg);
        }
    }
    List<FacetField> facets = response.getFacetFields();
    facet = null;
    if (facets != null) {
        facet = new Facet();
        List<FacetType> facetTypes = new ArrayList<FacetType>();
        for (FacetField facetField : facets) {
            List<FacetTerm> facetTerms = new ArrayList<FacetTerm>();
            FacetType facetType = new FacetType();
            facetType.setFacetName(facetField.getName());
            List<FacetField.Count> facetEntries = facetField.getValues();
            for (FacetField.Count fcount : facetEntries) {
                if (fcount.getCount() > 0) {
                    FacetTerm facetTerm = new FacetTerm();
                    facetTerm.setTermName(fcount.getName());
                    facetTerm.setTermCount(fcount.getCount());
                    //System.out.println(fcount.getName() + ": " + fcount.getCount());
                    facetTerms.add(facetTerm);
                }
            }
            facetType.setFacetTerms(facetTerms);
            facetTypes.add(facetType);
        }
        facet.setFacetTypes(facetTypes);
    }
    docs = response.getResults();
    return docs;
}

From source file:edu.harvard.liblab.ecru.rs.ResourceUtils.java

License:Open Source License

public static SolrQuery createSolrQuery(String q, List<String> fqs, String fl, String start, String rows,
        HashMap<String, List<String>> facetMap, String sort) {
    SolrQuery query = new SolrQuery();
    if (q == null || q.trim().isEmpty()) {
        q = QUERY_ALL;//w  ww.ja  va2s  . c om
    }
    query.setQuery(q);
    if (fqs != null && !fqs.isEmpty()) {
        query.setFilterQueries(fqs.toArray(new String[fqs.size()]));
    }
    try {
        Integer s = new Integer(start);
        query.setStart(s);

    } catch (NumberFormatException e) {
        if (start != null)
            System.out.println("start not integer: " + start);
    }
    try {
        Integer r = new Integer(rows);
        query.setRows(r);

    } catch (NumberFormatException e) {
        if (rows != null)
            System.out.println("rows not integer: " + rows);
    }
    if (fl != null && !fl.isEmpty()) {
        if (fl.indexOf("type") < 0) {
            fl += ",type";
        }
        String[] fields = fl.split(",");
        for (int i = 0; i < fields.length; i++) {
            fields[i] = fields[i].trim();
        }

        query.setFields(fields);

    }
    if (sort != null && !sort.trim().isEmpty()) {
        String[] sortArr = sort.split(",");
        ArrayList<SortClause> clauses = new ArrayList<SortClause>();
        for (String s : sortArr) {
            if (!s.isEmpty()) {
                String[] sc = s.split(" ");
                String v = sc[0];
                String order = "asc";
                if (sc.length == 2) {
                    order = sc[1];
                }
                clauses.add(new SortClause(v, (order.equals("asc") ? ORDER.asc : ORDER.desc)));
            }
        }
        query.setSorts(clauses);
    }
    query = addFacetsToQuery(query, facetMap);
    return query;
}

From source file:edu.indiana.d2i.htrc.solr.connection.SolrManager.java

License:Apache License

/**
 * send query String to Solr and get response
 * //  w w  w .  j av a 2s  .co  m
 * @param queryStr query String that can be parsed by Solr Query Parser 
 * @return query response, a org.apache.solr.client.solrj.response.QueryResponse object
 */
public QueryResponse query(String queryStr) {

    SolrQuery query = new SolrQuery();

    query.setRows(Integer.MAX_VALUE);
    query.setQuery(queryStr);

    QueryResponse query_response = null;
    try {
        query_response = solrServer.query(query);
    } catch (SolrServerException e) {
        e.printStackTrace();
    }

    return query_response;
}

From source file:edu.indiana.htrc.action.auditlog.DataAPIGeneralAction.java

License:Apache License

public String execute() {
    if (session.get("testsession") != null) {
        int x = (Integer) session.get("testsession");
        session.put("testsession", ++x);
    }/*from   w  w  w.  java  2  s.c o m*/

    setErrorPage("/pages/DataAPI.jsp");
    if (!Utility.validateInputDateOrder(from, to)) {
        return ERROR;
    }

    setDisplay("/pages/dataAPIAllResult.jsp");
    String input_start_UTC = Utility.convertDate2UTC(from);
    String input_end_UTC = Utility.convertDate2UTC(to);

    Solr4Connector connector = new Solr4Connector();
    SolrServer solr_server = connector.connect();

    SolrQuery query = new SolrQuery();
    String queryStr = "timeStamp:[" + input_start_UTC + " TO " + input_end_UTC + "]"; // " AND " + "userName:" + userName;
    if (userName != null) {
        queryStr = queryStr + " AND " + "userName:" + userName;
    }
    if (sourceIP != null) {
        queryStr = queryStr + " AND " + "sourceIP:" + sourceIP;
    }

    queryStr = queryStr + " AND " + "logName:" + "AUDIT-Log";
    query.setQuery(queryStr).setRows(0).setFacet(true).set("facet.mincount", 1).set("facet.limit", 18)
            .set("facet.sort", "count").set("facet.date", "timeStamp")
            .set("f.timeStamp.facet.date.start", input_start_UTC)
            .set("f.timeStamp.facet.date.end", input_end_UTC).set("f.timeStamp.facet.date.gap", "+1DAY")
            .set("f.timeStamp.facet.mincount", 0).set("facet.field", fieldName);

    QueryResponse query_response = null;

    try {
        // logger.debug("solr_server == null is " + solr_server == null);
        query_response = solr_server.query(query);

    } catch (SolrServerException e) {
        // logger.debug("solr_server == null is " + solr_server == null);
        e.printStackTrace();
    }

    // ///////////////////generate
    // charts/////////////////////////////////////////
    List<FacetField> facet_field_list = query_response.getFacetFields();

    for (int i = 0; i < facet_field_list.size(); i++) {

        FacetField facet_field = facet_field_list.get(i);
        String field_name = facet_field.getName();

        Map<String, Integer> map = Utility.getFacetFieldAsMap(facet_field);

        if (field_name.equals("date")) {
            FacetField facet_date = query_response.getFacetDate("timeStamp");

            Map<String, Integer> UTC_detail_time_map = Utility.getFacetFieldAsMap(facet_date);
            Map<String, Integer> UTC_YMD_map = Utility.convertMapFromUTCDetail2UTCYMD(UTC_detail_time_map);

            setTimeIntervalMap(UTC_YMD_map);
            // setDateMap(map);
        } else if (field_name.equals("sourceIP")) {
            setIpMap(map);
        } else if (field_name.equals("responseStatus")) {
            setResponseStatusMap(map);
        } else if (field_name.equals("userName")) {
            setUserMap(map);
        }
    }
    connector.disconnect();
    return SUCCESS;
}

From source file:edu.indiana.htrc.action.solrproxylog.SolrProxyGeneralAction.java

License:Apache License

public String execute() {

    setErrorPage("/pages/SolrProxy.jsp");
    if (!Utility.validateInputDateOrder(from, to)) {
        return ERROR;
    }/*from  w  ww  .ja va  2s  .c o  m*/

    setDisplay("/pages/solrProxyAllResult.jsp");

    String input_start_UTC = Utility.convertDate2UTC(from);
    String input_end_UTC = Utility.convertDate2UTC(to);

    Solr4Connector connector = new Solr4Connector();
    SolrServer solr_server = connector.connect();

    SolrQuery query = new SolrQuery();
    String queryStr = "timeStamp:[" + input_start_UTC + " TO " + input_end_UTC + "]"; // " AND " + "userName:" + userName;

    if (sourceIP != null) {
        queryStr = queryStr + " AND " + "sourceIP:" + sourceIP;
    }
    if (XForward_For != null) {
        queryStr = queryStr + " AND " + "XForward_For:" + XForward_For;
    }

    queryStr = queryStr + " AND " + "logName:" + "SOLR-PROXY-Log";
    query.setQuery(queryStr).setRows(0).setFacet(true).set("facet.mincount", 1).set("facet.limit", 18)
            .set("facet.sort", "count").set("facet.date", "timeStamp")
            .set("f.timeStamp.facet.date.start", input_start_UTC)
            .set("f.timeStamp.facet.date.end", input_end_UTC).set("f.timeStamp.facet.date.gap", "+1DAY")
            .set("f.timeStamp.facet.mincount", 0).set("facet.field", fieldName);

    QueryResponse query_response = null;

    try {
        // logger.debug("solr_server == null is " + solr_server == null);
        query_response = solr_server.query(query);

    } catch (SolrServerException e) {
        // logger.debug("solr_server == null is " + solr_server == null);
        e.printStackTrace();
    }

    // ///////////////////generate charts/////////////////////////////////////////
    List<FacetField> facet_field_list = query_response.getFacetFields();

    for (int i = 0; i < facet_field_list.size(); i++) {

        FacetField facet_field = facet_field_list.get(i);
        String field_name = facet_field.getName();

        Map<String, Integer> map = Utility.getFacetFieldAsMap(facet_field);

        if (field_name.equals("date")) {
            FacetField facet_date = query_response.getFacetDate("timeStamp");

            Map<String, Integer> UTC_detail_time_map = Utility.getFacetFieldAsMap(facet_date);
            Map<String, Integer> UTC_YMD_map = Utility.convertMapFromUTCDetail2UTCYMD(UTC_detail_time_map);

            setTimeIntervalMap(UTC_YMD_map);
            //setDateMap(map);
        } else if (field_name.equals("sourceIP")) {
            setIpMap(map);
        } else if (field_name.equals("responseStatus")) {
            setResponseStatusMap(map);
        } else if (field_name.equals("XForward_For")) {
            setXForward_ForMap(map);
        }
    }
    connector.disconnect();
    return SUCCESS;
}