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

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

Introduction

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

Prototype

public SolrQuery setRequestHandler(String qt) 

Source Link

Document

The Request Handler to use (see the solrconfig.xml), which is stored in the "qt" parameter.

Usage

From source file:org.zaizi.sensefy.api.service.SolrSmartAutoCompleteService.java

License:Open Source License

/**
 * This part is retrieving Infix Title suggestions. It's using a specific
 * request handler.//from   ww w .  jav  a2  s  .  c  o  m
 *
 * @param numberOfSuggestions
 * @param termToComplete
 * @param solrCore
 * @throws SolrServerException
 */
private List<SolrDocument> getTitleSuggestions(int numberOfSuggestions, String termToComplete,
        SolrServer solrCore, Principal user, boolean security)
        throws SolrServerException, SolrException, IOException {

    SensefyUser sensefyUser = SensefyUserMapper.getSensefyUserFromPrincipal(user);

    SolrDocumentList titleSuggestions = new SolrDocumentList();
    SolrQuery titleSuggestionsQuery = new SolrQuery("\"" + termToComplete + "\"");
    titleSuggestionsQuery.setRequestHandler("/suggest");
    titleSuggestionsQuery.setRows(numberOfSuggestions);
    if (security) {
        String filterQueryACLs = SecurityQueryBuilder.getSecurityFilterQuery(sensefyUser);
        titleSuggestionsQuery.setFilterQueries(filterQueryACLs);
    }
    QueryResponse titleSuggestionResponse;
    titleSuggestionResponse = solrCore.query(titleSuggestionsQuery);
    titleSuggestions = titleSuggestionResponse.getResults();
    if (titleSuggestions.getNumFound() == 0) {
        this.buildSpellcheckQuery(titleSuggestionsQuery, termToComplete);
        titleSuggestionResponse = solrCore.query(titleSuggestionsQuery);
        titleSuggestions = titleSuggestionResponse.getResults();

    }
    this.filterDocumentSuggestions(titleSuggestions, titleSuggestionResponse.getHighlighting());
    return titleSuggestions;
}

From source file:uk.co.flax.biosolr.ontology.search.solr.SolrDocumentSearch.java

License:Apache License

@Override
public ResultsList<Document> searchDocuments(String term, int start, int rows, List<String> additionalFields,
        List<String> filters) throws SearchEngineException {
    ResultsList<Document> results;

    try {//from w  w w. java2s  . com
        SolrQuery query = new SolrQuery(term);
        query.setStart(start);
        query.setRows(rows);
        query.setRequestHandler(config.getDocumentRequestHandler());
        List<String> queryFields = new ArrayList<>(DEFAULT_SEARCH_FIELDS);
        if (additionalFields != null) {
            queryFields.addAll(additionalFields);
        }
        if (filters != null) {
            query.addFilterQuery(filters.toArray(new String[filters.size()]));
        }
        query.setParam(DisMaxParams.QF, queryFields.toArray(new String[queryFields.size()]));

        LOGGER.debug("Query: {}", query);

        QueryResponse response = server.query(query);
        List<Document> docs;
        long total = 0;

        if (response.getGroupResponse() != null) {
            docs = new ArrayList<>(rows);
            GroupResponse gResponse = response.getGroupResponse();
            for (GroupCommand gCommand : gResponse.getValues()) {
                total += gCommand.getNGroups();
                for (Group group : gCommand.getValues()) {
                    docs.addAll(server.getBinder().getBeans(Document.class, group.getResult()));
                }
            }
        } else if (response.getResults().getNumFound() == 0) {
            docs = new ArrayList<>();
        } else {
            docs = response.getBeans(Document.class);
            total = response.getResults().getNumFound();
        }

        results = new ResultsList<>(docs, start, (start / rows), total);
    } catch (SolrServerException | IOException e) {
        throw new SearchEngineException(e);
    }

    return results;
}

From source file:uk.co.flax.biosolr.ontology.search.solr.SolrDocumentSearch.java

License:Apache License

@Override
public ResultsList<Document> searchByEfoUri(int start, int rows, String term, String... uris)
        throws SearchEngineException {
    ResultsList<Document> results;

    try {/*from  w w  w.  j  ava 2 s . c  o m*/
        SolrQuery query = new SolrQuery(term + " OR " + EFO_URI_FIELD + ":" + buildUriFilter(uris));
        // query.addFilterQuery(EFO_URI_FIELD + ":" + buildUriFilter(uris));
        query.setStart(start);
        query.setRows(rows);
        query.setRequestHandler(config.getDocumentUriRequestHandler());

        LOGGER.debug("Solr query: {}", query);

        QueryResponse response = server.query(query);
        List<Document> docs = response.getBeans(Document.class);
        results = new ResultsList<>(docs, start, (start / rows), response.getResults().getNumFound());
    } catch (SolrServerException | IOException e) {
        throw new SearchEngineException(e);
    }

    return results;
}

From source file:uk.co.flax.biosolr.ontology.search.solr.SolrOntologySearch.java

License:Apache License

@Override
public ResultsList<OntologyEntryBean> searchOntology(String term, List<String> filters, int start, int rows,
        List<String> fields) throws SearchEngineException {
    ResultsList<OntologyEntryBean> results = null;

    try {//from   w  w  w  .j  a v a  2 s .  com
        SolrQuery query = new SolrQuery(term);
        if (filters != null && !filters.isEmpty()) {
            query.addFilterQuery(filters.toArray(new String[filters.size()]));
        }
        if (fields != null && !fields.isEmpty()) {
            query.setFields(fields.toArray(new String[fields.size()]));
        }
        query.setStart(start);
        query.setRows(rows);
        query.setRequestHandler(config.getOntologyRequestHandler());

        LOGGER.trace("Ontology search URL: {}", getQueryUrl(query, config.getOntologyUrl()));

        QueryResponse response = server.query(query);
        List<OntologyEntryBean> annotations = response.getBeans(OntologyEntryBean.class);
        results = new ResultsList<>(annotations, rows, (start / rows), response.getResults().getNumFound());
    } catch (SolrServerException e) {
        throw new SearchEngineException(e);
    }

    return results;
}

From source file:uk.co.flax.biosolr.ontology.search.solr.SolrOntologySearch.java

License:Apache License

@Override
public OntologyEntryBean findOntologyEntryByUri(String uri) throws SearchEngineException {
    OntologyEntryBean retVal = null;//  w w w . j a v a  2  s .c o  m

    try {
        SolrQuery query = new SolrQuery(uri);
        query.setRequestHandler(config.getOntologyNodeRequestHandler());

        QueryResponse response = server.query(query);
        List<OntologyEntryBean> annotations = response.getBeans(OntologyEntryBean.class);
        if (annotations.size() > 0) {
            retVal = annotations.get(0);
        }
    } catch (SolrServerException e) {
        throw new SearchEngineException(e);
    }

    return retVal;
}

From source file:uk.co.flax.ukmp.search.solr.SolrSearchEngine.java

License:Apache License

@Override
public SearchResults search(Query query) throws SearchEngineException {
    SearchResults results;// ww  w . j  ava2  s.  com

    SolrQuery sQuery = new SolrQuery(query.getQuery());
    sQuery.setRows(query.getPageSize());
    int start = query.getPageSize() * query.getPageNumber();
    sQuery.setStart(start);
    sQuery.setSort(query.getSortField(), query.isSortAscending() ? ORDER.asc : ORDER.desc);

    if (query.getFilters() != null) {
        for (String fq : query.getFilters()) {
            sQuery.addFilterQuery(fq);
        }
    }

    // Set the request handler
    sQuery.setRequestHandler(config.getQueryHandler());

    try {
        QueryResponse response = server.query(sQuery);
        SolrDocumentList docs = response.getResults();

        Map<String, FacetList> availableFilters = extractAvailableFilters(response);
        availableFilters.putAll(extractFacetQueries(response));
        Map<String, FacetList> appliedFilters = extractAppliedFilters(query);
        trimAvailableFilters(availableFilters, appliedFilters);

        SearchState search = new SearchState(query.getQuery(), query.getSortField(), query.isSortAscending(),
                query.getPageNumber(), availableFilters, null, appliedFilters, query.isHighlightingEnabled());
        List<Tweet> tweets = extractTweets(docs, response.getHighlighting(), query.isHighlightingEnabled());

        results = new SearchResults(start, docs.getNumFound(), query.getPageSize(), tweets, search);
    } catch (SolrServerException e) {
        LOGGER.error("Server exception caught for query {}: {}", sQuery.toString(), e.getMessage());
        throw new SearchEngineException(e);
    }

    return results;
}

From source file:uk.co.flax.ukmp.search.solr.SolrSearchEngine.java

License:Apache License

@Override
public SearchResults getTextBatch(int batchNum) throws SearchEngineException {
    SearchResults results;//ww w . ja v  a 2s  .  c  o  m
    TermsConfiguration termsConfig = config.getTermsConfiguration();

    SolrQuery query = new SolrQuery("*:*");
    query.setRequestHandler(termsConfig.getHandler());
    query.setFields(termsConfig.getField());
    query.setRows(termsConfig.getBatchSize());
    query.setStart(batchNum * termsConfig.getBatchSize());
    query.addFilterQuery(termsConfig.getFilters().toArray(new String[0]));

    try {
        QueryResponse response = server.query(query);
        SolrDocumentList docs = response.getResults();

        // Attempt to ensure we always return at least one batch of results
        if (docs.getNumFound() == 0) {
            LOGGER.debug("No tweets found in text batch - running again without filters");
            docs = runQueryWithoutFilters(query, termsConfig.getFilters());
        }

        List<Tweet> tweets = new ArrayList<Tweet>(docs.size());
        for (SolrDocument doc : docs) {
            Tweet tweet = new Tweet();
            tweet.setText((String) doc.getFieldValue(termsConfig.getField()));
            tweets.add(tweet);
        }

        results = new SearchResults(query.getStart(), docs.getNumFound(), query.getRows(), tweets, null);
    } catch (SolrServerException e) {
        LOGGER.error("Server exception caught getting text batch {}: {}", batchNum, e.getMessage());
        throw new SearchEngineException(e);
    }

    return results;
}