List of usage examples for org.apache.solr.client.solrj SolrClient query
public QueryResponse query(SolrParams params) throws SolrServerException, IOException
From source file:org.apache.drill.exec.store.solr.SolrClientAPIExec.java
License:Apache License
public QueryResponse getSolrDocs(String solrServer, String solrCoreName, String uniqueKey, List<String> fields, Long solrDocFectCount, String cursorMark, StringBuilder filters, List<SolrAggrParam> solrAggrParams, List<SolrSortParam> solrSortParams, List<String> aggrFieldNames, boolean isGroup, boolean isCountOnlyQuery) { String solrUrl = solrServer;// ww w . j a va 2s . co m if (solrCoreName != null) { solrUrl = solrServer + solrCoreName; } SolrClient solrClient = new HttpSolrClient(solrUrl); String fieldStr = null; String[] fieldListArr = null; List<String> statsFieldList = Lists.newArrayList(); SolrQuery solrQuery = new SolrQuery().setQuery("{!cache=false}" + uniqueKey + ":*").setRows(0); if (filters.length() > 0) { solrQuery.setParam("fq", filters.toString()); SolrClientAPIExec.logger.debug("Filter query [ " + filters.toString() + " ]"); } if (!fields.isEmpty()) { fieldStr = Joiner.on(",").join(fields); solrQuery.setParam("fl", fieldStr); solrQuery.setRows(solrDocFectCount.intValue()); SolrClientAPIExec.logger.debug("Response field list [" + fieldStr + "]"); } if (solrAggrParams != null && !solrAggrParams.isEmpty() && !isCountOnlyQuery) { solrQuery.setGetFieldStatistics(true); String referenceToStatsTag = "{!stats=t1}"; String statsTag = "{!tag=t1}"; for (SolrAggrParam solrAggrParam : solrAggrParams) { String statsField = solrAggrParam.getFieldName(); if (!fields.contains(statsField)) { statsField = uniqueKey; } if (!statsFieldList.contains(statsField)) { statsFieldList.add(statsField); } fields.remove(statsField); } if (!fields.isEmpty()) { fieldListArr = fields.toArray(new String[fields.size()]); } SolrClientAPIExec.logger.debug("Adding stats field parameter.." + statsFieldList + ""); if (isGroup) { List<String> groupFields = Lists.newArrayList(); solrQuery.addGetFieldStatistics(statsTag + Joiner.on(",").join(statsFieldList)); for (String aggrField : fields) { if (fields.contains(aggrField)) { groupFields.add(aggrField); } } if (groupFields.size() == 1) { SolrClientAPIExec.logger.debug("Adding stats facet parameters.." + groupFields + ""); for (String statsField : statsFieldList) { solrQuery.addStatsFieldFacets(statsField, groupFields.toArray(new String[groupFields.size()])); } } else { SolrClientAPIExec.logger.debug("Adding facet pivot parameters.." + groupFields + ""); solrQuery.addFacetPivotField(referenceToStatsTag + Joiner.on(",").join(groupFields)); solrQuery.setFacetLimit(-1); } } else { for (String statsField : statsFieldList) { solrQuery.setGetFieldStatistics(statsField); } } solrQuery.setRows(0); } else if (isGroup) { fieldListArr = fields.toArray(new String[fields.size()]); solrQuery.setFacet(true); if (fields.size() == 1) { solrQuery.addFacetField(fieldListArr); solrQuery.setFacetLimit(-1); } else { solrQuery.addFacetPivotField(Joiner.on(",").join(fields)); } solrQuery.setRows(0); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(-1); } else { solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark); solrQuery.addSort(SolrQuery.SortClause.desc(uniqueKey)); } if (!solrSortParams.isEmpty()) { for (SolrSortParam solrSortParam : solrSortParams) { String solrSortField = solrSortParam.getSortFieldName(); ORDER solrSortDir = solrSortParam.getSortDir(); solrQuery.addSort(solrSortField, solrSortDir); } } QueryResponse rsp = null; try { SolrClientAPIExec.logger.info("Submitting Query :" + solrUrl + "/select" + solrQuery.toQueryString()); rsp = solrClient.query(solrQuery); SolrClientAPIExec.logger.info("Response recieved from [ " + solrServer + " ] core [ " + solrCoreName + " ] in " + rsp.getQTime() + " MS."); } catch (SolrServerException | IOException e) { SolrClientAPIExec.logger .debug("Error occured while fetching results from solr server " + e.getMessage()); } finally { try { solrClient.close(); } catch (IOException e) { SolrClientAPIExec.logger .debug("Error occured while closing connection of solr server " + e.getMessage()); } } return rsp; }
From source file:org.apache.drill.exec.store.solr.SolrClientAPIExec.java
License:Apache License
public QueryResponse getSolrFieldStats(String solrServer, String solrCoreName, String uniqueKey, List<String> fields, StringBuilder filters) { solrCoreName = solrCoreName.replaceAll("`", ""); SolrClient solrClient = new HttpSolrClient(solrServer + solrCoreName); SolrQuery solrQuery = new SolrQuery().setTermsRegexFlag("case_insensitive").setQuery(uniqueKey + ":*") .setRows(0);//from w w w . j a v a 2 s .c om solrQuery.setGetFieldStatistics(true); for (String field : fields) { solrQuery.setGetFieldStatistics(field); } if (filters.length() > 0) { solrQuery.setParam("fq", filters.toString()); SolrClientAPIExec.logger.info("filter query [ " + filters.toString() + " ]"); } SolrClientAPIExec.logger.info("Setting up solrquery. Query String " + solrQuery.toQueryString()); try { QueryResponse rsp = solrClient.query(solrQuery); SolrClientAPIExec.logger .info("Response recieved from [ " + solrServer + " ] core [ " + solrCoreName + " ]"); return rsp; } catch (SolrServerException | IOException e) { SolrClientAPIExec.logger .debug("Error occured while fetching results from solr server " + e.getMessage()); } finally { try { solrClient.close(); } catch (IOException e) { } } return null; }
From source file:org.apache.nifi.processors.solr.TestPutSolrContentStream.java
License:Apache License
@Test public void testDeleteWithXml() throws IOException, SolrServerException { final SolrClient solrClient = createEmbeddedSolrClient(DEFAULT_SOLR_CORE); final TestableProcessor proc = new TestableProcessor(solrClient); final TestRunner runner = createDefaultTestRunner(proc); runner.setProperty(PutSolrContentStream.CONTENT_STREAM_PATH, "/update"); runner.setProperty(PutSolrContentStream.CONTENT_TYPE, "application/xml"); runner.setProperty("commit", "true"); // add a document so there is something to delete SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "1"); doc.addField("first", "bob"); doc.addField("last", "smith"); doc.addField("created", new Date()); solrClient.add(doc);//from w ww. ja v a 2 s. co m solrClient.commit(); // prove the document got added SolrQuery query = new SolrQuery("*:*"); QueryResponse qResponse = solrClient.query(query); Assert.assertEquals(1, qResponse.getResults().getNumFound()); // run the processor with a delete-by-query command runner.enqueue("<delete><query>first:bob</query></delete>".getBytes("UTF-8")); runner.run(1, false); // prove the document got deleted qResponse = solrClient.query(query); Assert.assertEquals(0, qResponse.getResults().getNumFound()); }
From source file:org.apache.nifi.processors.solr.TestPutSolrContentStream.java
License:Apache License
/** * Verify that given SolrServer contains the expected SolrDocuments. *//* w ww . j a v a2 s. c om*/ private static void verifySolrDocuments(SolrClient solrServer, Collection<SolrDocument> expectedDocuments) throws IOException, SolrServerException { solrServer.commit(); SolrQuery query = new SolrQuery("*:*"); QueryResponse qResponse = solrServer.query(query); Assert.assertEquals(expectedDocuments.size(), qResponse.getResults().getNumFound()); // verify documents have expected fields and values for (SolrDocument expectedDoc : expectedDocuments) { boolean found = false; for (SolrDocument solrDocument : qResponse.getResults()) { boolean foundAllFields = true; for (String expectedField : expectedDoc.getFieldNames()) { Object expectedVal = expectedDoc.getFirstValue(expectedField); Object actualVal = solrDocument.getFirstValue(expectedField); foundAllFields = expectedVal.equals(actualVal); } if (foundAllFields) { found = true; break; } } Assert.assertTrue("Could not find " + expectedDoc, found); } }
From source file:org.apache.nutch.indexwriter.solr.TestSolrJ.java
License:Apache License
/** * query the example/*from w ww .jav a2 s . c om*/ */ @Test public void testQuery() throws Exception { SolrClient client = new HttpSolrClient.Builder(serverUrl).build(); // Empty the database... client.deleteByQuery("*:*");// delete everything! // Now add something... SolrInputDocument doc = new SolrInputDocument(); String docID = "1112211111"; doc.addField("id", docID, 1.0f); doc.addField("name", "my name!", 1.0f); assertEquals(null, doc.getField("foo")); assertTrue(doc.getField("name").getValue() != null); UpdateResponse upres = client.add(doc); // System.out.println( "ADD:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); upres = client.commit(true, true); // System.out.println( "COMMIT:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); upres = client.optimize(true, true); // System.out.println( "OPTIMIZE:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); SolrQuery query = new SolrQuery(); query.setQuery("id:" + docID); QueryResponse response = client.query(query); assertEquals(docID, response.getResults().get(0).getFieldValue("id")); // Now add a few docs for facet testing... List<SolrInputDocument> docs = new ArrayList<>(); SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField("id", "2", 1.0f); doc2.addField("inStock", true, 1.0f); doc2.addField("price", 2, 1.0f); doc2.addField("timestamp_dt", new java.util.Date(), 1.0f); docs.add(doc2); SolrInputDocument doc3 = new SolrInputDocument(); doc3.addField("id", "3", 1.0f); doc3.addField("inStock", false, 1.0f); doc3.addField("price", 3, 1.0f); doc3.addField("timestamp_dt", new java.util.Date(), 1.0f); docs.add(doc3); SolrInputDocument doc4 = new SolrInputDocument(); doc4.addField("id", "4", 1.0f); doc4.addField("inStock", true, 1.0f); doc4.addField("price", 4, 1.0f); doc4.addField("timestamp_dt", new java.util.Date(), 1.0f); docs.add(doc4); SolrInputDocument doc5 = new SolrInputDocument(); doc5.addField("id", "5", 1.0f); doc5.addField("inStock", false, 1.0f); doc5.addField("price", 5, 1.0f); doc5.addField("timestamp_dt", new java.util.Date(), 1.0f); docs.add(doc5); upres = client.add(docs); // System.out.println( "ADD:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); upres = client.commit(true, true); // System.out.println( "COMMIT:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); upres = client.optimize(true, true); // System.out.println( "OPTIMIZE:"+upres.getResponse() ); assertEquals(0, upres.getStatus()); query = new SolrQuery("*:*"); query.addFacetQuery("price:[* TO 2]"); query.addFacetQuery("price:[2 TO 4]"); query.addFacetQuery("price:[5 TO *]"); query.addFacetField("inStock"); query.addFacetField("price"); query.addFacetField("timestamp_dt"); query.removeFilterQuery("inStock:true"); response = client.query(query); assertEquals(0, response.getStatus()); assertEquals(5, response.getResults().getNumFound()); assertEquals(3, response.getFacetQuery().size()); assertEquals(2, response.getFacetField("inStock").getValueCount()); assertEquals(4, response.getFacetField("price").getValueCount()); // test a second query, test making a copy of the main query SolrQuery query2 = query.getCopy(); query2.addFilterQuery("inStock:true"); response = client.query(query2); assertEquals(1, query2.getFilterQueries().length); assertEquals(0, response.getStatus()); assertEquals(2, response.getResults().getNumFound()); assertFalse(query.getFilterQueries() == query2.getFilterQueries()); // sanity check round tripping of params... query = new SolrQuery("foo"); query.addFilterQuery("{!field f=inStock}true"); query.addFilterQuery("{!term f=name}hoss"); query.addFacetQuery("price:[* TO 2]"); query.addFacetQuery("price:[2 TO 4]"); response = client.query(query); assertTrue("echoed params are not a NamedList: " + response.getResponseHeader().get("params").getClass(), response.getResponseHeader().get("params") instanceof NamedList); NamedList echo = (NamedList) response.getResponseHeader().get("params"); List values = null; assertEquals("foo", echo.get("q")); assertTrue("echoed fq is not a List: " + echo.get("fq").getClass(), echo.get("fq") instanceof List); values = (List) echo.get("fq"); assertEquals(2, values.size()); assertEquals("{!field f=inStock}true", values.get(0)); assertEquals("{!term f=name}hoss", values.get(1)); assertTrue("echoed facet.query is not a List: " + echo.get("facet.query").getClass(), echo.get("facet.query") instanceof List); values = (List) echo.get("facet.query"); assertEquals(2, values.size()); assertEquals("price:[* TO 2]", values.get(0)); assertEquals("price:[2 TO 4]", values.get(1)); }
From source file:org.hadatac.console.models.SecurityRole.java
License:Apache License
public static boolean existsSolr() { SolrClient solrClient = new HttpSolrClient( Play.application().configuration().getString("hadatac.solr.users") + Collections.AUTHENTICATE_ROLES); SolrQuery solrQuery = new SolrQuery("*:*"); try {/* w w w . jav a 2 s .co m*/ QueryResponse queryResponse = solrClient.query(solrQuery); solrClient.close(); SolrDocumentList list = queryResponse.getResults(); if (list.size() > 0) { return true; } } catch (Exception e) { System.out.println("[ERROR] SecurityRole.findByIdSolr - Exception message: " + e.getMessage()); } return false; }
From source file:org.hadatac.console.models.SecurityRole.java
License:Apache License
public static SecurityRole findByIdSolr(String id) { SecurityRole role = null;//from ww w .j a v a 2 s . c o m SolrClient solrClient = new HttpSolrClient( Play.application().configuration().getString("hadatac.solr.users") + Collections.AUTHENTICATE_ROLES); SolrQuery solrQuery = new SolrQuery("id:" + id); try { QueryResponse queryResponse = solrClient.query(solrQuery); solrClient.close(); SolrDocumentList list = queryResponse.getResults(); if (list.size() == 1) { role = convertSolrDocumentToSecurityRole(list.get(0)); } } catch (Exception e) { System.out.println("[ERROR] SecurityRole.findByIdSolr - Exception message: " + e.getMessage()); } return role; }
From source file:org.hadatac.console.models.SecurityRole.java
License:Apache License
public static SecurityRole findByRoleNameSolr(String roleName) { SecurityRole role = null;//from ww w .java2 s.c o m SolrClient solrClient = new HttpSolrClient( Play.application().configuration().getString("hadatac.solr.users") + Collections.AUTHENTICATE_ROLES); SolrQuery solrQuery = new SolrQuery("role_name:" + roleName); try { QueryResponse queryResponse = solrClient.query(solrQuery); solrClient.close(); SolrDocumentList list = queryResponse.getResults(); if (list.size() == 1) { role = convertSolrDocumentToSecurityRole(list.get(0)); } } catch (Exception e) { System.out.println("[ERROR] SecurityRole.findByRoleNameSolr - Exception message: " + e.getMessage()); } return role; }
From source file:org.intermine.web.autocompletion.AutoCompleter.java
License:GNU General Public License
/** * Returns n search results// ww w . j a v a 2 s . c o m * @param query is the string used for search * @param field is the field in which you like to search (e.g. name) * @param className is the class in which you like to search (e.g. SOTerm) * @param n number of the first n search results * @return string array with search results and an error flag at position 0 */ public String[] getFastList(String query, String field, String className, int n) { String status = "true"; String[] stringResults = null; SolrClient solrClient = SolrClientHandler.getClientInstance(this.propertiesManager.getSolrUrl()); QueryResponse resp = null; if (!"".equals(query) && !query.trim().startsWith("*")) { if (query.endsWith(" ")) { query = query.substring(0, query.length() - 1); } String[] tmp; if (query.contains(" ")) { tmp = query.replaceAll(" +", " ").trim().split(" "); query = new String(); for (int i = 0; i < tmp.length; i++) { query += tmp[i]; if (i < tmp.length - 1) { query += "* AND " + field + ":"; } } } try { SolrQuery newQuery = new SolrQuery(); newQuery.setQuery(field + ":" + query + "*"); //adding a wildcard in the end newQuery.setRequestHandler("select"); newQuery.setRows(n); // FIXME: hardcoded maximum newQuery.setFilterQueries(CLASSNAME_FIELD + ":" + className); resp = solrClient.query(newQuery); SolrDocumentList results = resp.getResults(); stringResults = new String[results.size() + 1]; for (int i = 1; i < results.size() + 1; i++) { try { SolrDocument document = results.get(i - 1); stringResults[i] = ((ArrayList<String>) document.getFieldValue(field)).get(0); } catch (Exception e) { status = "No results! Please try again."; } } stringResults[0] = status; return stringResults; } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); status = "Please type in more characters to get results."; stringResults = new String[1]; stringResults[0] = status; } return stringResults; } return null; }
From source file:org.mousephenotype.cda.indexers.AbstractIndexer.java
License:Apache License
public long getDocumentCount(SolrClient solrClient) throws IndexerException { Long numFound = 0L;/*from ww w .j av a 2 s .c o m*/ SolrQuery query = new SolrQuery().setQuery("*:*").setRows(0); try { numFound = solrClient.query(query).getResults().getNumFound(); } catch (SolrServerException | IOException e) { throw new IndexerException(e); } logger.debug("number found = " + numFound); return numFound; }