List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
From source file:org.apache.camel.component.solr.SolrComponentTestSupport.java
License:Apache License
protected QueryResponse executeSolrQuery(String query) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); return solrServer.query(solrQuery); }
From source file:org.apache.camel.component.solr.SolrSpringTest.java
License:Apache License
private QueryResponse executeSolrQuery(String query) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); return solrServer.query(solrQuery); }
From source file:org.apache.droids.solr.AdvancedSolrHandleTest.java
License:Apache License
public void performSelection(String html, String field, String selector, String expectedValue) throws IOException, DroidsException, URISyntaxException, SolrServerException { AdvancedSolrHandler handler = new AdvancedSolrHandler(); handler.setServer(solr);/*from www . j a v a2s . c om*/ HashMap<String, String> selectors = new HashMap<String, String>(); selectors.put(field, selector); handler.setSelectors(selectors); MockContentEntity contentEntity = new MockContentEntity(); contentEntity.setCharset("UTF-8"); contentEntity.setMimeType("text/html"); contentEntity.setText(html); handler.handle(new URI("http://localhost/"), contentEntity); solr.commit(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setFields(field); QueryResponse response = solr.query(query); SolrDocument doc = response.getResults().iterator().next(); String value = (String) doc.getFieldValue(field); assertEquals(expectedValue, value); }
From source file:org.apache.hadoop.hive.solr.SolrQueryGenerator.java
License:Apache License
public static SolrQuery generateQuery(JobConf job) { SolrQuery solrQuery = new SolrQuery(); String query = job.get(ExternalTableProperties.SOLR_QUERY); solrQuery.setQuery(query); String fields = StringUtils.join(new ExternalTableProperties().COLUMN_NAMES, ", "); solrQuery.set("fl", fields); // Since each mapper is going to query each shard separately // we set "distrib" --> false. solrQuery.set("distrib", "false"); // pass the filter query by doing predicate pushdown. String filterExprSerialized = job.get(TableScanDesc.FILTER_EXPR_CONF_STR); if (filterExprSerialized == null) { // If no predicate pushdown is possible return solrQuery; }/*from w w w .j av a2 s .c om*/ ExprNodeDesc filterExpr = Utilities.deserializeExpression(filterExprSerialized); IndexPredicateAnalyzer analyzer = PredicateAnalyzer.getPredicateAnalyzer(); List<IndexSearchCondition> searchConditions = new ArrayList<IndexSearchCondition>(); analyzer.analyzePredicate(filterExpr, searchConditions); for (IndexSearchCondition condition : searchConditions) { String fieldName = condition.getColumnDesc().getColumn(); String value = condition.getConstantDesc().getValue().toString(); StringBuffer fqExp = new StringBuffer(); if (condition.getComparisonOp().equals("org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual")) { // Formulating Filter Query Expression. fqExp.append(fieldName).append(":").append(value); solrQuery.addFilterQuery(fqExp.toString()); LOG.debug("Equals comparison found, adding it to SOLR filter query"); } if (condition.getComparisonOp() .equals("org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan")) { fqExp.append(fieldName).append(":").append("{").append(value).append(" TO *}"); solrQuery.addFilterQuery(fqExp.toString()); LOG.debug("Greater than comparison found, adding it to SOLR filter query"); } if (condition.getComparisonOp() .equals("org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrGreaterThan")) { fqExp.append(fieldName).append(":").append("[").append(value).append(" TO *]"); solrQuery.addFilterQuery(fqExp.toString()); LOG.debug("Greater than or equals comparison found, adding it to SOLR filter query"); } if (condition.getComparisonOp().equals("org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPLessThan")) { fqExp.append(fieldName).append(":").append("{* TO ").append(value).append(" }"); solrQuery.addFilterQuery(fqExp.toString()); LOG.debug("Less than comparison found, adding it to SOLR filter query"); } if (condition.getComparisonOp() .equals("org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrLessThan")) { fqExp.append(fieldName).append(":").append("[* TO ").append(value).append(" ]"); solrQuery.addFilterQuery(fqExp.toString()); LOG.debug("Less than or equals comparison found, adding it to SOLR filter query"); } } return solrQuery; }
From source file:org.apache.jackrabbit.oak.plugins.index.solr.index.SolrIndexEditorIT.java
License:Apache License
@Test public void testAddSomeNodes() throws Exception { Root r = createRoot();//from w ww. j av a2 s . c o m r.getTree("/").addChild("a").addChild("b").addChild("doc1").setProperty("text", "hit that hot hat tattoo"); r.getTree("/").getChild("a").addChild("c").addChild("doc2").setProperty("text", "it hits hot hats"); r.getTree("/").getChild("a").getChild("b").addChild("doc3").setProperty("text", "tattoos hate hot hits"); r.getTree("/").getChild("a").getChild("b").addChild("doc4").setProperty("text", "hats tattoos hit hot"); r.commit(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); QueryResponse queryResponse = server.query(query); assertTrue("no documents were indexed", queryResponse.getResults().size() > 0); }
From source file:org.apache.jackrabbit.oak.plugins.index.solr.index.SolrIndexEditorIT.java
License:Apache License
@Test public void testRemoveNode() throws Exception { Root r = createRoot();//from ww w .j ava 2 s.com // Add a node r.getTree("/").addChild("testRemoveNode").setProperty("foo", "bar"); r.commit(); // check the node is not in Solr anymore SolrQuery query = new SolrQuery(); query.setQuery("path_exact:\\/testRemoveNode"); assertTrue("item with id:testRemoveNode was not found in the index", server.query(query).getResults().size() > 0); // remove the node in oak r.getTree("/").getChild("testRemoveNode").remove(); r.commit(); // check the node is not in Solr anymore assertTrue("item with id:testRemoveNode was found in the index", server.query(query).getResults().size() == 0); }
From source file:org.apache.jackrabbit.oak.plugins.index.solr.query.FilterQueryParser.java
License:Apache License
static SolrQuery getQuery(Filter filter, QueryIndex.IndexPlan plan, OakSolrConfiguration configuration) { SolrQuery solrQuery = new SolrQuery(); setDefaults(solrQuery, configuration); StringBuilder queryBuilder = new StringBuilder(); FullTextExpression ft = filter.getFullTextConstraint(); if (ft != null) { queryBuilder.append(parseFullTextExpression(ft, configuration)); queryBuilder.append(' '); } else if (filter.getFulltextConditions() != null) { Collection<String> fulltextConditions = filter.getFulltextConditions(); for (String fulltextCondition : fulltextConditions) { queryBuilder.append(fulltextCondition).append(" "); }//from w w w . j a va 2s .c om } List<QueryIndex.OrderEntry> sortOrder = plan.getSortOrder(); if (sortOrder != null) { for (QueryIndex.OrderEntry orderEntry : sortOrder) { SolrQuery.ORDER order; if (QueryIndex.OrderEntry.Order.ASCENDING.equals(orderEntry.getOrder())) { order = SolrQuery.ORDER.asc; } else { order = SolrQuery.ORDER.desc; } String sortingField; if (JcrConstants.JCR_PATH.equals(orderEntry.getPropertyName())) { sortingField = partialEscape(configuration.getPathField()).toString(); } else if (JcrConstants.JCR_SCORE.equals(orderEntry.getPropertyName())) { sortingField = "score"; } else { if (orderEntry.getPropertyName().indexOf('/') >= 0) { log.warn("cannot sort on relative properties, ignoring {} clause", orderEntry); continue; // sorting by relative properties not supported until index time aggregation is supported } sortingField = partialEscape( getSortingField(orderEntry.getPropertyType().tag(), orderEntry.getPropertyName())) .toString(); } solrQuery.addOrUpdateSort(sortingField, order); } } Collection<Filter.PropertyRestriction> propertyRestrictions = filter.getPropertyRestrictions(); if (propertyRestrictions != null && !propertyRestrictions.isEmpty()) { for (Filter.PropertyRestriction pr : propertyRestrictions) { if (pr.isNullRestriction()) { // can not use full "x is null" continue; } // facets if (QueryImpl.REP_FACET.equals(pr.propertyName)) { solrQuery.setFacetMinCount(1); solrQuery.setFacet(true); String value = pr.first.getValue(Type.STRING); solrQuery.addFacetField( value.substring(QueryImpl.REP_FACET.length() + 1, value.length() - 1) + "_facet"); } // native query support if (SolrQueryIndex.NATIVE_SOLR_QUERY.equals(pr.propertyName) || SolrQueryIndex.NATIVE_LUCENE_QUERY.equals(pr.propertyName)) { String nativeQueryString = String.valueOf(pr.first.getValue(pr.first.getType())); if (isSupportedHttpRequest(nativeQueryString)) { // pass through the native HTTP Solr request String requestHandlerString = nativeQueryString.substring(0, nativeQueryString.indexOf('?')); if (!"select".equals(requestHandlerString)) { if (requestHandlerString.charAt(0) != '/') { requestHandlerString = "/" + requestHandlerString; } solrQuery.setRequestHandler(requestHandlerString); } String parameterString = nativeQueryString.substring(nativeQueryString.indexOf('?') + 1); for (String param : parameterString.split("&")) { String[] kv = param.split("="); if (kv.length != 2) { throw new RuntimeException("Unparsable native HTTP Solr query"); } else { // more like this if ("/mlt".equals(requestHandlerString)) { if ("stream.body".equals(kv[0])) { kv[0] = "q"; String mltFlString = "mlt.fl="; int mltFlIndex = parameterString.indexOf(mltFlString); if (mltFlIndex > -1) { int beginIndex = mltFlIndex + mltFlString.length(); int endIndex = parameterString.indexOf('&', beginIndex); String fields; if (endIndex > beginIndex) { fields = parameterString.substring(beginIndex, endIndex); } else { fields = parameterString.substring(beginIndex); } kv[1] = "_query_:\"{!dismax qf=" + fields + " q.op=OR}" + kv[1] + "\""; } } if ("mlt.fl".equals(kv[0]) && ":path".equals(kv[1])) { // rep:similar passes the path of the node to find similar documents for in the :path // but needs its indexed content to find similar documents kv[1] = configuration.getCatchAllField(); } } if ("/spellcheck".equals(requestHandlerString)) { if ("term".equals(kv[0])) { kv[0] = "spellcheck.q"; } solrQuery.setParam("spellcheck", true); } if ("/suggest".equals(requestHandlerString)) { if ("term".equals(kv[0])) { kv[0] = "suggest.q"; } solrQuery.setParam("suggest", true); } solrQuery.setParam(kv[0], kv[1]); } } return solrQuery; } else { queryBuilder.append(nativeQueryString); } } else { if (SolrQueryIndex.isIgnoredProperty(pr, configuration)) { continue; } String first = null; if (pr.first != null) { first = partialEscape(String.valueOf(pr.first.getValue(pr.first.getType()))).toString(); } String last = null; if (pr.last != null) { last = partialEscape(String.valueOf(pr.last.getValue(pr.last.getType()))).toString(); } String prField = configuration.getFieldForPropertyRestriction(pr); CharSequence fieldName = partialEscape(prField != null ? prField : pr.propertyName); if ("jcr\\:path".equals(fieldName.toString())) { queryBuilder.append(configuration.getPathField()); queryBuilder.append(':'); queryBuilder.append(first); } else { if (pr.first != null && pr.last != null && pr.first.equals(pr.last)) { queryBuilder.append(fieldName).append(':'); queryBuilder.append(first); } else if (pr.first == null && pr.last == null) { if (!queryBuilder.toString().contains(fieldName + ":")) { queryBuilder.append(fieldName).append(':'); queryBuilder.append('*'); } } else if ((pr.first != null && pr.last == null) || (pr.last != null && pr.first == null) || (!pr.first.equals(pr.last))) { // TODO : need to check if this works for all field types (most likely not!) queryBuilder.append(fieldName).append(':'); queryBuilder.append(createRangeQuery(first, last, pr.firstIncluding, pr.lastIncluding)); } else if (pr.isLike) { // TODO : the current parameter substitution is not expected to work well queryBuilder.append(fieldName).append(':'); queryBuilder.append(partialEscape(String.valueOf(pr.first.getValue(pr.first.getType())) .replace('%', '*').replace('_', '?'))); } else { throw new RuntimeException("[unexpected!] not handled case"); } } } queryBuilder.append(" "); } } if (configuration.useForPrimaryTypes()) { String[] pts = filter.getPrimaryTypes().toArray(new String[filter.getPrimaryTypes().size()]); StringBuilder ptQueryBuilder = new StringBuilder(); for (int i = 0; i < pts.length; i++) { String pt = pts[i]; if (i == 0) { ptQueryBuilder.append("("); } if (i > 0 && i < pts.length) { ptQueryBuilder.append("OR "); } ptQueryBuilder.append("jcr\\:primaryType").append(':').append(partialEscape(pt)).append(" "); if (i == pts.length - 1) { ptQueryBuilder.append(")"); ptQueryBuilder.append(' '); } } solrQuery.addFilterQuery(ptQueryBuilder.toString()); } if (filter.getQueryStatement() != null && filter.getQueryStatement().contains(QueryImpl.REP_EXCERPT)) { if (!solrQuery.getHighlight()) { // enable highlighting solrQuery.setHighlight(true); // defaults solrQuery.set("hl.fl", "*"); solrQuery.set("hl.encoder", "html"); solrQuery.set("hl.mergeContiguous", true); solrQuery.setHighlightSimplePre("<strong>"); solrQuery.setHighlightSimplePost("</strong>"); } } if (configuration.useForPathRestrictions()) { Filter.PathRestriction pathRestriction = filter.getPathRestriction(); if (pathRestriction != null) { String path = purgePath(filter, plan.getPathPrefix()); String fieldName = configuration.getFieldForPathRestriction(pathRestriction); if (fieldName != null) { if (pathRestriction.equals(Filter.PathRestriction.ALL_CHILDREN)) { solrQuery.addFilterQuery(fieldName + ':' + path); } else { queryBuilder.append(fieldName); queryBuilder.append(':'); queryBuilder.append(path); } } } } if (configuration.collapseJcrContentNodes()) { solrQuery.addFilterQuery("{!collapse field=" + configuration.getCollapsedPathField() + " min=" + configuration.getPathDepthField() + " hint=top_fc nullPolicy=expand}"); } if (queryBuilder.length() == 0) { queryBuilder.append("*:*"); } String escapedQuery = queryBuilder.toString(); solrQuery.setQuery(escapedQuery); if (log.isDebugEnabled()) { log.debug("JCR query {} has been converted to Solr query {}", filter.getQueryStatement(), solrQuery.toString()); } return solrQuery; }
From source file:org.apache.jena.query.spatial.SpatialIndexSolr.java
License:Apache License
@SuppressWarnings("deprecation") private SolrDocumentList solrQuery(Shape shape, int limit, SpatialOperation operation) { SolrQuery sq = new SolrQuery(); sq.setQuery("*:*"); sq.setFilterQueries(docDef.getGeoField() + ":\"" + operation.toString() + "(" + SpatialQuery.ctx.toString(shape) + ") distErrPct=0\""); //System.out.println("SolrQuery: " +sq.toString()); try {//from w w w. java2 s . c o m QueryResponse rsp = solrServer.query(sq); SolrDocumentList docs = rsp.getResults(); return docs; } catch (SolrServerException e) { exception(e); return null; } }
From source file:org.apache.metron.solr.dao.SolrMetaAlertRetrieveLatestDao.java
License:Apache License
@Override public Document getLatest(String guid, String sensorType) throws IOException { if (MetaAlertConstants.METAALERT_TYPE.equals(sensorType)) { // Unfortunately, we can't just defer to the indexDao for this. Child alerts in Solr end up // having to be dug out. String guidClause = Constants.GUID + ":" + guid; SolrQuery query = new SolrQuery(); query.setQuery(guidClause).setFields("*", "[child parentFilter=" + guidClause + " limit=999]"); try {/*from w w w.jav a 2s.c om*/ QueryResponse response = solrDao.getSolrClient(solrDao.getZkHosts()).query(METAALERTS_COLLECTION, query); // GUID is unique, so it's definitely the first result if (response.getResults().size() == 1) { SolrDocument result = response.getResults().get(0); return SolrUtilities.toDocument(result); } else { return null; } } catch (SolrServerException e) { throw new IOException("Unable to retrieve metaalert", e); } } else { return solrDao.getLatest(guid, sensorType); } }
From source file:org.apache.nifi.processors.solr.GetSolr.java
License:Apache License
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { final ComponentLog logger = getLogger(); final AtomicBoolean continuePaging = new AtomicBoolean(true); final SolrQuery solrQuery = new SolrQuery(); try {/*from w ww .jav a 2 s . c o m*/ if (id_field == null) { id_field = getFieldNameOfUniqueKey(); } final String dateField = context.getProperty(DATE_FIELD).getValue(); final Map<String, String> stateMap = new HashMap<String, String>(); stateMap.putAll(context.getStateManager().getState(Scope.CLUSTER).toMap()); solrQuery.setQuery("*:*"); final String query = context.getProperty(SOLR_QUERY).getValue(); if (!StringUtils.isBlank(query) && !query.equals("*:*")) { solrQuery.addFilterQuery(query); } final StringBuilder automatedFilterQuery = (new StringBuilder()).append(dateField).append(":[") .append(stateMap.get(STATE_MANAGER_FILTER)).append(" TO *]"); solrQuery.addFilterQuery(automatedFilterQuery.toString()); final List<String> fieldList = new ArrayList<String>(); final String returnFields = context.getProperty(RETURN_FIELDS).getValue(); if (!StringUtils.isBlank(returnFields)) { fieldList.addAll(Arrays.asList(returnFields.trim().split("[,]"))); if (!fieldList.contains(dateField)) { fieldList.add(dateField); dateFieldNotInSpecifiedFieldsList.set(true); } for (String returnField : fieldList) { solrQuery.addField(returnField.trim()); } } solrQuery.setParam(CursorMarkParams.CURSOR_MARK_PARAM, stateMap.get(STATE_MANAGER_CURSOR_MARK)); solrQuery.setRows(context.getProperty(BATCH_SIZE).asInteger()); final StringBuilder sortClause = (new StringBuilder()).append(dateField).append(" asc,") .append(id_field).append(" asc"); solrQuery.setParam("sort", sortClause.toString()); while (continuePaging.get()) { final QueryRequest req = new QueryRequest(solrQuery); if (isBasicAuthEnabled()) { req.setBasicAuthCredentials(getUsername(), getPassword()); } logger.debug(solrQuery.toQueryString()); final QueryResponse response = req.process(getSolrClient()); final SolrDocumentList documentList = response.getResults(); if (response.getResults().size() > 0) { final SolrDocument lastSolrDocument = documentList.get(response.getResults().size() - 1); final String latestDateValue = df.format(lastSolrDocument.get(dateField)); final String newCursorMark = response.getNextCursorMark(); solrQuery.setParam(CursorMarkParams.CURSOR_MARK_PARAM, newCursorMark); stateMap.put(STATE_MANAGER_CURSOR_MARK, newCursorMark); stateMap.put(STATE_MANAGER_FILTER, latestDateValue); FlowFile flowFile = session.create(); flowFile = session.putAttribute(flowFile, "solrQuery", solrQuery.toString()); if (context.getProperty(RETURN_TYPE).getValue().equals(MODE_XML.getValue())) { if (dateFieldNotInSpecifiedFieldsList.get()) { for (SolrDocument doc : response.getResults()) { doc.removeFields(dateField); } } flowFile = session.write(flowFile, SolrUtils.getOutputStreamCallbackToTransformSolrResponseToXml(response)); flowFile = session.putAttribute(flowFile, CoreAttributes.MIME_TYPE.key(), "application/xml"); } else { final RecordSetWriterFactory writerFactory = context.getProperty(RECORD_WRITER) .asControllerService(RecordSetWriterFactory.class); final RecordSchema schema = writerFactory.getSchema(null, null); final RecordSet recordSet = SolrUtils.solrDocumentsToRecordSet(response.getResults(), schema); final StringBuffer mimeType = new StringBuffer(); flowFile = session.write(flowFile, new OutputStreamCallback() { @Override public void process(final OutputStream out) throws IOException { try { final RecordSetWriter writer = writerFactory.createWriter(getLogger(), schema, out); writer.write(recordSet); writer.flush(); mimeType.append(writer.getMimeType()); } catch (SchemaNotFoundException e) { throw new ProcessException("Could not parse Solr response", e); } } }); flowFile = session.putAttribute(flowFile, CoreAttributes.MIME_TYPE.key(), mimeType.toString()); } session.transfer(flowFile, REL_SUCCESS); } continuePaging.set(response.getResults().size() == Integer .parseInt(context.getProperty(BATCH_SIZE).getValue())); } context.getStateManager().setState(stateMap, Scope.CLUSTER); } catch (SolrServerException | SchemaNotFoundException | IOException e) { context.yield(); session.rollback(); logger.error("Failed to execute query {} due to {}", new Object[] { solrQuery.toString(), e }, e); throw new ProcessException(e); } catch (final Throwable t) { context.yield(); session.rollback(); logger.error("Failed to execute query {} due to {}", new Object[] { solrQuery.toString(), t }, t); throw t; } }