Example usage for org.apache.solr.core SolrCore getRequestHandler

List of usage examples for org.apache.solr.core SolrCore getRequestHandler

Introduction

In this page you can find the example usage for org.apache.solr.core SolrCore getRequestHandler.

Prototype

public SolrRequestHandler getRequestHandler(String handlerName) 

Source Link

Document

Get the request handler registered to a given name.

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;/*from   w  ww.j  a v  a 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.SolrInformationServer.java

License:Open Source License

public SolrInformationServer(AlfrescoCoreAdminHandler adminHandler, SolrCore core,
        SOLRAPIClient repositoryClient, SolrContentStore solrContentStore) {
    this.adminHandler = adminHandler;
    this.core = core;
    this.nativeRequestHandler = core.getRequestHandler(REQUEST_HANDLER_NATIVE);
    this.cloud = new Cloud();
    this.repositoryClient = repositoryClient;
    this.solrContentStore = solrContentStore;

    Properties p = core.getResourceLoader().getCoreProperties();
    alfrescoVersion = p.getProperty("alfresco.version", "Unknown");
    transformContent = Boolean.parseBoolean(p.getProperty("alfresco.index.transformContent", "true"));
    recordUnindexedNodes = Boolean.parseBoolean(p.getProperty("alfresco.recordUnindexedNodes", "true"));
    lag = Integer.parseInt(p.getProperty("alfresco.lag", "1000"));
    holeRetention = Integer.parseInt(p.getProperty("alfresco.hole.retention", "3600000"));
    minHash = Boolean.parseBoolean(p.getProperty("alfresco.fingerprint", "true"));

    dataModel = AlfrescoSolrDataModel.getInstance();

    contentStreamLimit = Integer.parseInt(p.getProperty("alfresco.contentStreamLimit", "10000000"));

    // build base URL - host and port have to come from configuration.
    props = AlfrescoSolrDataModel.getCommonConfig();
    hostName = ConfigUtil.locateProperty(SOLR_HOST, props.getProperty(SOLR_HOST));

    port = portNumber(props);/*from  ww  w . jav a 2s.  c  o m*/
    baseUrl = baseUrl(props);
}

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

License:Open Source License

SolrDocument getState(SolrCore core, SolrQueryRequest request, String id) {
    ModifiableSolrParams newParams = new ModifiableSolrParams(request.getParams()).set(CommonParams.ID, id);
    request.setParams(newParams);//www  . j  a  v  a  2  s . c om

    SolrQueryResponse response = newSolrQueryResponse();
    core.getRequestHandler(REQUEST_HANDLER_GET).handleRequest(request, response);

    NamedList values = response.getValues();
    return (SolrDocument) values.get(RESPONSE_DEFAULT_ID);
}

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

License:Open Source License

/**
 * @see org.opencms.search.CmsSearchIndex#createIndexBackup()
 *///from ww  w.j a v  a2 s.c  om
@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.restlet.ext.lucene.SolrClientHelper.java

License:Open Source License

@Override
public void handle(Request request, Response response) {
    super.handle(request, response);

    Reference resRef = request.getResourceRef();
    String path = resRef.getPath();

    if (path != null) {
        path = resRef.getPath(true);/*from  w  w w  . j av a  2  s.com*/
    }

    String coreName = request.getResourceRef().getHostDomain();

    if (coreName == null || "".equals(coreName)) {
        coreName = getContext().getParameters().getFirstValue("DefaultCore");
    }

    SolrCore core = coreContainer.getCore(coreName);

    if (core == null) {
        response.setStatus(Status.SERVER_ERROR_INTERNAL, "No such core: " + coreName);
        return;
    }

    // Extract the handler from the path or params
    SolrRequestHandler handler = core.getRequestHandler(path);

    if (handler == null) {
        if ("/select".equals(path) || "/select/".equalsIgnoreCase(path)) {
            String qt = request.getResourceRef().getQueryAsForm().getFirstValue(CommonParams.QT);
            handler = core.getRequestHandler(qt);
            if (handler == null) {
                response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "unknown handler: " + qt);
                return;
            }
        }
        // Perhaps the path is to manage the cores
        if (handler == null && coreContainer != null && path.equals(coreContainer.getAdminPath())) {
            handler = coreContainer.getMultiCoreHandler();
        }
    }

    if (handler == null) {
        core.close();
        response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "unknown handler: " + path);
        return;
    }

    try {
        SolrQueryRequest solrReq = new SolrRestletQueryRequest(request, core);
        SolrQueryResponse solrResp = new SolrQueryResponse();
        core.execute(handler, solrReq, solrResp);

        if (solrResp.getException() != null) {
            response.setStatus(Status.SERVER_ERROR_INTERNAL, solrResp.getException());
        } else {
            response.setEntity(new SolrRepresentation(MediaType.APPLICATION_XML, solrReq, solrResp));
            response.setStatus(Status.SUCCESS_OK);
        }
    } catch (Exception e) {
        getLogger().log(Level.WARNING, "Unable to evaluate " + resRef.toString(), e);
        response.setStatus(Status.SERVER_ERROR_INTERNAL, e);
    } finally {
        core.close();
    }
}

From source file:org.restlet.ext.solr.SolrClientHelper.java

License:LGPL

@Override
public void handle(Request request, Response response) {
    super.handle(request, response);

    Reference resRef = request.getResourceRef();
    String path = resRef.getPath();

    if (path != null) {
        path = resRef.getPath(true);/* ww  w  .j  a  v a  2 s  . c o m*/
    }

    String coreName = request.getResourceRef().getHostDomain();

    if (coreName == null || "".equals(coreName)) {
        coreName = getContext().getParameters().getFirstValue("DefaultCore");
    }

    SolrCore core = coreContainer.getCore(coreName);

    if (core == null) {
        response.setStatus(Status.SERVER_ERROR_INTERNAL, "No such core: " + coreName);
        return;
    }

    // Extract the handler from the path or params
    SolrRequestHandler handler = core.getRequestHandler(path);

    if (handler == null) {
        if ("/select".equals(path) || "/select/".equalsIgnoreCase(path)) {
            String qt = request.getResourceRef().getQueryAsForm().getFirstValue(CommonParams.QT);
            handler = core.getRequestHandler(qt);
            if (handler == null) {
                response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "unknown handler: " + qt);
                return;
            }
        }
        // Perhaps the path is to manage the cores
        if (handler == null && coreContainer != null && path.equals(coreContainer.getAdminPath())) {
            handler = coreContainer.getMultiCoreHandler();
        }
    }

    if (handler == null) {
        core.close();
        response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "unknown handler: " + path);
        return;
    }

    try {
        SolrQueryRequest solrReq = new SolrRestletQueryRequest(request, core);

        SolrQueryResponse solrResp = new SolrQueryResponse();
        core.execute(handler, solrReq, solrResp);

        if (solrResp.getException() != null) {
            response.setStatus(Status.SERVER_ERROR_INTERNAL, solrResp.getException());
        } else {
            response.setEntity(new SolrRepresentation(solrReq, solrResp, core));
            response.setStatus(Status.SUCCESS_OK);
        }
    } catch (Exception e) {
        getLogger().log(Level.WARNING, "Unable to evaluate " + resRef.toString(), e);
        response.setStatus(Status.SERVER_ERROR_INTERNAL, e);
    } finally {
        core.close();
    }
}

From source file:org.tallison.solr.search.concordance.SolrConcordanceBase.java

License:Apache License

protected static <T extends RequestHandlerBase> String getHandlerName(SolrCore core, String defaultName,
        Class<T> clz) {//w w  w  .  j  a  v  a 2s .co m
    //I'd be just as happy stripping this off the url if I could figure out how...
    SolrRequestHandler handler = core.getRequestHandler(defaultName);

    if (handler == null) {
        for (Entry<String, ? extends RequestHandlerBase> kv : core.getRequestHandlers(clz).entrySet())
            return kv.getKey();
    } else
        return defaultName;

    return null;
}