List of usage examples for org.apache.solr.client.solrj SolrQuery set
public ModifiableSolrParams set(String name, String... val)
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); }