Example usage for org.apache.solr.request SolrRequestHandler handleRequest

List of usage examples for org.apache.solr.request SolrRequestHandler handleRequest

Introduction

In this page you can find the example usage for org.apache.solr.request SolrRequestHandler handleRequest.

Prototype

public void handleRequest(SolrQueryRequest req, SolrQueryResponse rsp);

Source Link

Document

Handles a query request, this method must be thread safe.

Usage

From source file:org.alfresco.solr.AlfrescoCoreAdminTester.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
private void testQueryByHandler(NamedList report, SolrCore core, String handler, String query, int count,
        String sort, Integer[] sorted, Locale locale, Integer rows, Integer start, ContentStream stream,
        String... filters) throws IOException {
    // TODO: report to rsp

    SolrServletRequest solrReq = null;/*ww  w .  ja va 2 s  . c o m*/
    try {
        NamedList<Object> queryReport = new SimpleOrderedMap<Object>();
        report.add(GUID.generate(), queryReport);
        queryReport.add("Query", query);

        boolean passed = true;
        boolean ordered = true;

        solrReq = new SolrServletRequest(core, null);
        SolrQueryResponse solrRsp = new SolrQueryResponse();
        SolrRequestHandler afts = core.getRequestHandler(handler);

        ModifiableSolrParams newParams = new ModifiableSolrParams(solrReq.getParams());
        newParams.set("alfresco.getSolrDocumentList", true);
        //newParams.set("defType", handler.substring("/".length()));
        newParams.set("q", query);
        newParams.set("fl", "score,DEBID");
        if (rows != null) {
            newParams.set("rows", "" + rows);
            queryReport.add("Rows", rows);
        } else {
            newParams.set("rows", "" + Integer.MAX_VALUE);
        }
        if (start != null) {
            newParams.set("start", "" + start);
            queryReport.add("Start", start);
        }
        if (sort != null) {
            newParams.set("sort", sort);
            queryReport.add("Sort", sort);
        }
        if (locale != null) {
            newParams.set("locale", locale.toString());
            queryReport.add("Locale", locale.toString());
        }
        if (filters != null) {
            for (String filter : filters) {
                if (filter != null) {
                    newParams.add("fq", filter);
                }
            }
            queryReport.add("Filters", filters);
        }
        solrReq.setParams(newParams);

        if (stream != null) {
            ArrayList<ContentStream> streams = new ArrayList<ContentStream>();
            streams.add(stream);
            solrReq.setContentStreams(streams);
            String streamStr = null;
            try (Reader reader = stream.getReader()) {
                streamStr = IOUtils.toString(reader);
            }
            queryReport.add("Stream", streamStr);
        }

        afts.handleRequest(solrReq, solrRsp);

        SolrDocumentList ds = (SolrDocumentList) solrRsp.getValues().get("responseSolrDocumentList");
        if (ds != null) {
            if (ds.size() != count) {
                passed = false;
                ordered = false;
                queryReport.add("Expected", count);
                queryReport.add("Found", ds.size());
            } else {
                queryReport.add("Found", ds.size());
            }

            if (sorted != null) {
                int sz = sorted.length;

                int[] dbids = new int[sz];
                SolrIndexSearcher searcher = solrReq.getSearcher();
                Iterator<SolrDocument> iterator = ds.iterator();
                for (int i = 0; i < sz; i++) {
                    SolrDocument doc = iterator.next();
                    dbids[i] = Integer.valueOf(((IndexableField) doc.getFirstValue("DBID")).stringValue());

                    if (ordered) {
                        if ((sorted[i] != null) && (dbids[i] != sorted[i].intValue())) {

                            ordered = false;
                            queryReport.add("Sort at " + i + " expected", sorted[i]);
                            queryReport.add("Sort at " + i + " found", dbids[i]);
                        }
                    }
                }
                if (ordered) {
                    queryReport.add("Order", "Passed");
                } else {
                    queryReport.add("Order", "FAILED");
                    StringBuilder builder = new StringBuilder();
                    for (int i = 0; i < dbids.length; i++) {
                        if (builder.length() > 0) {
                            builder.append(", ");
                        }
                        builder.append(dbids[i]);
                    }
                    queryReport.add("Sorted as ", builder.toString());
                }
            } else {

            }

            if (passed) {
                queryReport.add("Count", "Passed");
            } else {
                queryReport.add("Count", "FAILED");
            }
        } else {
            queryReport.add("Test", "ERROR");
        }
    } finally {
        if (solrReq != null) {
            solrReq.close();
        }
    }
}

From source file:org.alfresco.solr.Cloud.java

License:Open Source License

/**
 * @param requestHandler the handler that handles the request
 * @param request the request object to put the params on
 * @param params Solr parameters// w  w  w.  j av a  2s  . c  om
 * @return the response
 */
SolrQueryResponse getResponse(SolrRequestHandler requestHandler, SolrQueryRequest request, SolrParams params) {
    request.setParams(params);
    log.info("Running query " + params.get("q"));
    SolrQueryResponse solrRsp = new SolrQueryResponse();
    requestHandler.handleRequest(request, solrRsp);
    return solrRsp;
}

From source file:org.alfresco.solr.SolrInformationServer.java

License:Open Source License

private SolrDocumentList executeQueryRequest(SolrQueryRequest request, SolrQueryResponse response,
        SolrRequestHandler handler) {
    handler.handleRequest(request, response);

    NamedList values = response.getValues();
    return (SolrDocumentList) values.get(RESPONSE_DEFAULT_IDS);
}

From source file:org.opencms.search.solr.CmsSolrIndex.java

License:Open Source License

/**
 * @see org.opencms.search.CmsSearchIndex#createIndexBackup()
 *///w w  w .  j  av  a  2  s  . c  o  m
@Override
protected String createIndexBackup() {

    if (!isBackupReindexing()) {
        // if no backup is generated we don't need to do anything
        return null;
    }
    if (m_solr instanceof EmbeddedSolrServer) {
        EmbeddedSolrServer ser = (EmbeddedSolrServer) m_solr;
        CoreContainer con = ser.getCoreContainer();
        SolrCore core = con.getCore(getCoreName());
        if (core != null) {
            try {
                SolrRequestHandler h = core.getRequestHandler("/replication");
                if (h instanceof ReplicationHandler) {
                    h.handleRequest(
                            new LocalSolrQueryRequest(core,
                                    CmsRequestUtil.createParameterMap("?command=backup")),
                            new SolrQueryResponse());
                }
            } finally {
                core.close();
            }
        }
    }
    return null;
}

From source file:org.solbase.SolbaseDispatchFilter.java

License:Apache License

@SuppressWarnings({ "unused", "unchecked" })
private void handleAdminRequest(HttpServletRequest req, ServletResponse response, SolrRequestHandler handler,
        SolrQueryRequest solrReq) throws IOException {
    SolrQueryResponse solrResp = new SolrQueryResponse();
    final NamedList<Object> responseHeader = new SimpleOrderedMap<Object>();
    solrResp.add("responseHeader", responseHeader);
    NamedList<Object> toLog = solrResp.getToLog();
    toLog.add("webapp", req.getContextPath());
    toLog.add("path", solrReq.getContext().get("path"));
    toLog.add("params", "{" + solrReq.getParamString() + "}");
    handler.handleRequest(solrReq, solrResp);
    SolrCore.setResponseHeaderValues(handler, solrReq, solrResp);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < toLog.size(); i++) {
        String name = toLog.getName(i);
        Object val = toLog.getVal(i);
        sb.append(name).append("=").append(val).append(" ");
    }//from  w  w w.  jav  a2 s .c  o m
    QueryResponseWriter respWriter = SolrCore.DEFAULT_RESPONSE_WRITERS
            .get(solrReq.getParams().get(CommonParams.WT));
    if (respWriter == null)
        respWriter = SolrCore.DEFAULT_RESPONSE_WRITERS.get("standard");
    writeResponse(solrResp, response, respWriter, solrReq, Method.getMethod(req.getMethod()));
}

From source file:org.vootoo.server.RequestProcesser.java

License:Apache License

protected void handleAdminRequest(SolrRequestHandler handler, SolrQueryRequest solrReq) throws IOException {
    SolrQueryResponse solrResp = new SolrQueryResponse();
    SolrCore.preDecorateResponse(solrReq, solrResp);
    handler.handleRequest(solrReq, solrResp);
    SolrCore.postDecorateResponse(handler, solrReq, solrResp);
    if (logger.isInfoEnabled() && solrResp.getToLog().size() > 0) {
        logger.info(solrResp.getToLogAsString("[admin] "));
    }//from   w  ww.  j ava 2  s .c  o  m
    QueryResponseWriter respWriter = SolrCore.DEFAULT_RESPONSE_WRITERS
            .get(solrReq.getParams().get(CommonParams.WT));
    if (respWriter == null)
        respWriter = SolrCore.DEFAULT_RESPONSE_WRITERS.get("standard");
    writeResponse(solrResp, respWriter, solrReq);
}

From source file:org.xwiki.platform.search.internal.VelocityUtils.java

License:Open Source License

/**
 * @param key statistics key./*w w  w . ja  va 2 s. c  om*/
 * @return {@link NamedList} Map of Indexing statistics.
 */
private NamedList getStatistics(String key) {
    Map<String, SolrInfoMBean> reg = this.core.getInfoRegistry();
    LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams());
    SolrQueryResponse response = new SolrQueryResponse();
    if (key.startsWith("/admin") && !key.equals("/admin/")) {
        SolrRequestHandler base = (SolrRequestHandler) reg.get(key);
        base.handleRequest(req, response);
        return response.getValues();
    }
    return null;
}