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

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

Introduction

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

Prototype

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

Source Link

Document

Replace any existing parameter with the given name.

Usage

From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java

License:Open Source License

private void includeMissing(SolrQuery solrQuery, String facet) {
    try {//from w w w  .j a  v  a 2s.c o  m
        FacetName fn = FacetName.fromString(facet);
        if (fn != null && fn.isIncludeMissing()) {
            solrQuery.set("f." + fn.getSolrField() + ".facet.missing", true);
        }
    } catch (IllegalArgumentException e) {
        logger.debug("Unable to find a facet for " + facet);
    }
}

From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java

License:Open Source License

public List<Match> autocomplete(final String query, Integer pageSize, Map<String, String> selectedFacets)
        throws SolrServerException {
    SolrQuery solrQuery = new SolrQuery();

    if (query != null && !query.trim().equals("")) {
        //String searchString = query.trim().replace(" ", "+");
        solrQuery.setQuery(query);/* w  w w. ja  v a 2s.  c o  m*/
    } else {
        return new ArrayList<Match>();
    }

    // Filter the searchable objects out
    solrQuery.addFilterQuery("base.class_searchable_b:" + isSearchableObject());

    // Set additional result parameters
    //solrQuery.setRows(pageSize);
    int rows = 100;
    solrQuery.setRows(rows);

    if (selectedFacets != null && !selectedFacets.isEmpty()) {
        for (String facetName : selectedFacets.keySet()) {
            solrQuery.addFilterQuery(facetName + ":" + selectedFacets.get(facetName));
        }
    }

    solrQuery.set("defType", "edismax");
    solrQuery.set("qf", "autocomplete^3 autocompleteng");
    solrQuery.set("pf", "autocompletenge");
    solrQuery.set("fl", "autocomplete,id");
    solrQuery.setHighlight(true);
    solrQuery.set("hl.fl", "autocomplete");
    solrQuery.set("hl.snippets", 3);
    solrQuery.setHighlightSimplePre("<b>");
    solrQuery.setHighlightSimplePost("</b>");
    //solrQuery.setSortField("autocomplete", SolrQuery.ORDER.valueOf("desc"));
    /*
    solrQuery.set("group","true");
    solrQuery.set("group.field", "autocomplete");
     */

    QueryResponse queryResponse = solrServer.query(solrQuery);

    List<Match> results = new ArrayList<Match>();
    Map<String, Match> matchMap = new HashMap<String, Match>();

    for (SolrDocument solrDocument : queryResponse.getResults()) {
        Match match = new Match();
        String label = filter((String) solrDocument.get("autocomplete"));
        match.setLabel(label);
        match.setValue(label);
        matchMap.put((String) solrDocument.get("id"), match);
        results.add(match);
    }

    List<Match> distinctResults = removeDuplicates(results);

    List<Match> subResults1 = new ArrayList<Match>(); //ExactMatch
    List<Match> subResults2 = new ArrayList<Match>();

    for (Match item : distinctResults) {
        if ((item.getLabel().toLowerCase().startsWith(query.toLowerCase()))) {
            subResults1.add(item);
        } else {
            subResults2.add(item);
        }
    }

    if (subResults1.size() > 0) {
        Collections.sort(subResults1);
    }

    /*
    Collections.sort(subResults1, new Comparator() {
       @Override
       public int compare(Object matchOne, Object matchTwo) {
    //use instanceof to verify the references are indeed of the type in question
    return ((Match)matchOne).getLabel()
          .compareTo(((Match)matchTwo).getLabel());
       }
    });
    */

    subResults1.addAll(subResults2);
    List<Match> subResults = subResults1;

    List<Match> finalResults = new ArrayList<Match>();

    if (subResults.size() > 10) {
        finalResults = subResults.subList(0, 10);
    } else {
        finalResults = subResults;
    }

    //subResults = finalResults;

    /*
    for(GroupCommand groupCommand : queryResponse.getGroupResponse().getValues()) {
       for (Group group : groupCommand.getValues()) {
    for (SolrDocument solrDocument : group.getResult()) {
       Match match = new Match();
       String label = filter((String) solrDocument.get("autocomplete"));
       match.setLabel(label);
       match.setValue(label);
       matchMap.put((String) solrDocument.get("id"), match);
       results.add(match);
    }
       }
    }
    */
    for (String documentId : matchMap.keySet()) {
        if (queryResponse.getHighlighting().containsKey(documentId)) {
            Map<String, List<String>> highlightedTerms = queryResponse.getHighlighting().get(documentId);
            if (highlightedTerms.containsKey("autocomplete")) {
                matchMap.get(documentId).setLabel(highlightedTerms.get("autocomplete").get(0));
            }
        }
    }

    //return results;
    return finalResults;
}

From source file:org.emonocot.persistence.dao.hibernate.SearchableDaoImpl.java

License:Open Source License

/**
 * Prepares a {@link SolrQuery} with the parameters passed in
 * @param query/*from  w w  w  . j a va 2s. c  o m*/
 * @param sort
 * @param pageSize
 * @param pageNumber
 * @param selectedFacets
 * @return A {@link SolrQuery} that can be customised before passing to a {@link SolrServer}
 */
protected SolrQuery prepareQuery(String query, String sort, Integer pageSize, Integer pageNumber,
        Map<String, String> selectedFacets) {
    SolrQuery solrQuery = new SolrQuery();

    if (query != null && !query.trim().equals("")) {
        String searchString = null;
        if (query.indexOf(":") != -1) {
            searchString = query;
        } else {
            // replace spaces with '+' so that we search on terms
            searchString = query.trim().replace(" ", "+");
            solrQuery.set("defType", "edismax");
            solrQuery.set("qf", "searchable.label_sort searchable.solrsummary_t");
        }
        solrQuery.setQuery(searchString);

    } else {
        solrQuery.set("defType", "edismax");
        solrQuery.set("qf", "searchable.label_sort searchable.solrsummary_t");
        solrQuery.setQuery("*:*");
    }

    if (sort != null && sort.length() != 0) {
        for (String singleSort : sort.split(",")) {
            if (singleSort.equals("_asc")) {
                //Do nothing
            } else if (singleSort.endsWith("_asc")) {
                String sortField = singleSort.substring(0, singleSort.length() - 4);
                solrQuery.addSortField(sortField, SolrQuery.ORDER.asc);
            } else if (singleSort.endsWith("_desc")) {
                String sortField = singleSort.substring(0, singleSort.length() - 5);
                solrQuery.addSortField(sortField, SolrQuery.ORDER.desc);
            }
        }
    }

    if (pageSize != null) {
        solrQuery.setRows(pageSize);
        if (pageNumber != null) {
            solrQuery.setStart(pageSize * pageNumber);
        }
    }

    if (selectedFacets != null && !selectedFacets.isEmpty()) {
        for (String facetName : selectedFacets.keySet()) {
            String facetValue = selectedFacets.get(facetName);
            if (StringUtils.isNotEmpty(facetValue)) {
                solrQuery.addFilterQuery(facetName + ":" + selectedFacets.get(facetName));
            } else {//Subtract/Exclude documents with any value for the facet
                solrQuery.addFilterQuery("-" + facetName + ":[* TO *]");
            }
        }
    }

    return solrQuery;
}

From source file:org.gbif.common.search.builder.SolrQueryBuilder.java

License:Apache License

public SolrQuery build(final SearchRequest<P> searchRequest) {
    SolrQuery solrQuery = new SolrQuery();
    // q param/*  w  w w  .  j av a 2s. c  o m*/
    solrQuery.setQuery(queryBuilder.build(searchRequest));
    // paging
    setQueryPaging(searchRequest, solrQuery);
    // sets the default, alternative query
    solrQuery.set(ALT_QUERY_PARAM, DEFAULT_QUERY);
    // filters
    setQueryFilter(searchRequest, solrQuery);
    // highlight
    setHighLightParams(searchRequest, solrQuery);
    // sorting
    setPrimarySortOrder(solrQuery);
    // set shards/for distributed search
    setRequestHandler(solrQuery, requestHandler);

    LOG.debug("Solr query build: {}", solrQuery);
    return solrQuery;
}

From source file:org.geotools.data.solr.SolrDataStore.java

License:Open Source License

private void addViewparams(Query q, SolrQuery query) {
    String qViewParamers = null;/*from  w  w  w  .  j  av  a2  s. c  o m*/
    String fqViewParamers = null;
    Hints hints = q.getHints();
    if (hints != null) {
        Map<String, String> parameters = (Map<String, String>) hints.get(Hints.VIRTUAL_TABLE_PARAMETERS);
        if (parameters != null) {
            for (String param : parameters.keySet()) {
                // Accepts only q and fq query parameters
                if (param.equalsIgnoreCase("q")) {
                    qViewParamers = parameters.get(param);
                }
                if (param.equalsIgnoreCase("fq")) {
                    fqViewParamers = parameters.get(param);
                }
            }
        }
    }
    if (qViewParamers != null && !qViewParamers.isEmpty()) {
        query.set("q", query.get("q").concat(" AND ").concat(qViewParamers));
    }
    if (fqViewParamers != null && !fqViewParamers.isEmpty()) {
        query.addFilterQuery(fqViewParamers);
    }
}

From source file:org.geotools.data.solr.SolrFeatureReader.java

License:Open Source License

/**
 * Creates the feature reader for SOLR store <br>
 * The feature reader use SOLR CURSOR to paginate request, so multiple SOLR query will be
 * executed//from   w w w  . j av  a2 s. co  m
 * 
 * @param featureType the feature type to query
 * @param solrUrl the URL of SOLR server
 * @param solrQuery the SOLR query to execute
 * @param solrDataStore the SOLR store
 * @throws SolrServerException
 */
public SolrFeatureReader(SimpleFeatureType featureType, HttpSolrServer server, SolrQuery solrQuery,
        SolrDataStore solrDataStore) throws SolrServerException {
    this.featureType = featureType;
    this.solrQuery = solrQuery;
    this.wktReader = new WKTReader();
    this.solrDataStore = solrDataStore;
    this.pkey = solrDataStore.getPrimaryKey(featureType.getTypeName());

    this.builder = new SimpleFeatureBuilder(featureType);

    this.server = server;

    // Add always pk as field if not already present
    if (solrQuery.getFields() != null && !solrQuery.getFields().contains(pkey.getName())) {
        solrQuery.addField(pkey.getName());
    }

    // Can't use pagination with start, then first query for cursor mark of start
    if (solrQuery.getStart() != null && solrQuery.getStart() > 0) {
        cursorMark = getCursorMarkForStart(server, solrQuery);
    } else {
        cursorMark = CursorMarkParams.CURSOR_MARK_START;
    }
    solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark);
    QueryResponse rsp = server.query(solrQuery);
    if (this.solrDataStore.getLogger().isLoggable(Level.FINE)) {
        this.solrDataStore.getLogger().log(Level.FINE, "SOLR query done: " + solrQuery.toString());
    }
    this.solrDocIterator = rsp.getResults().iterator();
    nextCursorMark = rsp.getNextCursorMark();
    counter = 0;
}

From source file:org.geotools.data.solr.SolrFeatureReader.java

License:Open Source License

private String getCursorMarkForStart(HttpSolrServer server, SolrQuery solrQuery) throws SolrServerException {
    Integer prevRows = solrQuery.getRows();
    solrQuery.setRows(solrQuery.getStart());
    solrQuery.setStart(0);/*from  w w  w . j a v a2s .  c  o  m*/
    solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, CursorMarkParams.CURSOR_MARK_START);
    QueryResponse rsp = server.query(solrQuery);
    if (this.solrDataStore.getLogger().isLoggable(Level.FINE)) {
        this.solrDataStore.getLogger().log(Level.FINE, "SOLR query done: " + solrQuery.toString());
    }
    String nextC = rsp.getNextCursorMark();
    solrQuery.setRows(prevRows);
    return nextC;
}

From source file:org.janusgraph.diskstorage.solr.SolrIndex.java

License:Apache License

@Override
public Stream<String> query(IndexQuery query, KeyInformation.IndexRetriever information, BaseTransaction tx)
        throws BackendException {
    final String collection = query.getStore();
    final String keyIdField = getKeyFieldId(collection);
    final SolrQuery solrQuery = new SolrQuery("*:*");
    solrQuery.set(CommonParams.FL, keyIdField);
    final String queryFilter = buildQueryFilter(query.getCondition(), information.get(collection));
    solrQuery.addFilterQuery(queryFilter);
    if (!query.getOrder().isEmpty()) {
        addOrderToQuery(solrQuery, query.getOrder());
    }/*  w  ww .j av  a2 s .co m*/
    solrQuery.setStart(0);
    if (query.hasLimit()) {
        solrQuery.setRows(Math.min(query.getLimit(), batchSize));
    } else {
        solrQuery.setRows(batchSize);
    }
    return executeQuery(query.hasLimit() ? query.getLimit() : null, 0, collection, solrQuery,
            doc -> doc.getFieldValue(keyIdField).toString());
}

From source file:org.kuali.ole.docstore.engine.service.rest.DocstoreRestClient_UT.java

License:Open Source License

public void searchBibWithFacets(String facetSort) throws Exception {
    String[] facets = { "Author_facet", "Format_facet", "Genre_facet", "Language_facet",
            "PublicationDate_facet", "PublicationDate_sort" };
    String[] fieldList = { "LocalId_display", "Title_sort", "Title_display", "JournalTitle_display",
            "Author_display", "Publisher_display", "ISBN_display", "ISSN_display", "Subject_display",
            "Publisher_display", "PublicationDate_display", "Edition_display", "Format_display",
            "Language_display", "Description_display", "FormGenre_display", "DocFormat", "staffOnlyFlag",
            "bibIdentifier", "holdingsIdentifier" };
    String args = "(DocType:bibliographic)AND((*:*))";
    SolrServer solr = SolrServerManager.getInstance().getSolrServer();
    SolrQuery query = new SolrQuery();
    query.setQuery(args);//w  w  w.  ja v  a2 s  .c o m
    query.setFacet(true);
    query.addFacetField(facets);
    query.setFacetMinCount(1);
    query.setFacetSort(facetSort);
    query.setFacetLimit(5);
    query.setFields(fieldList);
    query.set("facet.offset", "0");
    QueryResponse response = solr.query(query);
    System.out.println("Search result count " + response.getResults().getNumFound()
            + " and  time taken to search is " + response.getQTime());
}

From source file:org.lilyproject.indexer.engine.test.IndexerTest.java

License:Apache License

private QueryResponse getQueryResponse(String query) throws SolrServerException, InterruptedException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.set("q", query);
    solrQuery.set("rows", 5000);
    return lilyProxy.getSolrProxy().getSolrServer().query(solrQuery);
}