List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
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//from w w w. j a v a2 s . c om 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.gbif.occurrence.download.file.OccurrenceFileWriterJob.java
/** * Creates a SolrQuery that contains the query parameter as the filter query value. *//*from w w w . j a v a 2 s . c om*/ private SolrQuery createSolrQuery(String query) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(SolrConstants.DEFAULT_QUERY); if (!Strings.isNullOrEmpty(query)) { solrQuery.addFilterQuery(query); } return solrQuery; }
From source file:org.geotools.data.solr.FieldLayerMapper.java
License:Open Source License
@Override public List<String> createTypeNames(HttpSolrServer solrServer) throws Exception { List<String> names = new ArrayList<>(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.addFacetField(field);/*from www . java 2 s .com*/ query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); query.setRows(0); query.setParam("omitHeader", true); QueryResponse rsp = solrServer.query(query); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.log(Level.FINE, "SOLR query done: " + query.toString()); } List<Count> uniqueFacetFields = rsp.getFacetFields().get(0).getValues(); for (Count field : uniqueFacetFields) { names.add(field.getName()); } return names; }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
/** * Retrieve SOLR attribute for specific type <br/> * Two SOLR LukeRequest are needed to discover SOLR fields and theirs schema for dynamic and * static kinds. <br/>//from w w w .j a v a 2 s . c o m * For each discovered field a SOLR request is needed to verify if the field has no values in * the actual type, this information will be stored in {@link SolrAttribute#setEmpty}. <br/> * SolrJ not extracts information about uniqueKey so custom class * {@link ExtendedFieldSchemaInfo} is used. <br/> * MultiValued SOLR field is mapped as String type * * @param layerName the type to use to query the SOLR field {@link SolrDataStore#field} * * @see {@link SolrUtils#decodeSolrFieldType} * @see {@link ExtendedFieldSchemaInfo#ExtendedFieldSchemaInfo} * */ public ArrayList<SolrAttribute> getSolrAttributes(String layerName) { if (solrAttributes.isEmpty()) { solrAttributes = new ArrayList<SolrAttribute>(); try { LukeRequest lq = new LukeRequest(); lq.setShowSchema(true); LukeResponse processSchema = lq.process(solrServer); lq = new LukeRequest(); lq.setShowSchema(false); LukeResponse processField = lq.process(solrServer); Map<String, FieldInfo> fis = processField.getFieldInfo(); SortedSet<String> keys = new TreeSet<String>(fis.keySet()); for (String k : keys) { FieldInfo fieldInfo = fis.get(k); String name = fieldInfo.getName(); String type = fieldInfo.getType(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setRows(0); query.addFilterQuery(this.field + ":*"); if (layerName != null && layerName.isEmpty()) { query.addFilterQuery(name + ":" + layerName); } else { query.addFilterQuery(name + ":*"); } QueryResponse rsp = solrServer.query(query); long founds = rsp.getResults().getNumFound(); FieldTypeInfo fty = processSchema.getFieldTypeInfo(type); if (fty != null) { Class<?> objType = SolrUtils.decodeSolrFieldType(fty.getClassName()); if (objType != null) { ExtendedFieldSchemaInfo extendedFieldSchemaInfo = new SolrUtils.ExtendedFieldSchemaInfo( processSchema, processField, name); SolrAttribute at = new SolrAttribute(name, objType); if (extendedFieldSchemaInfo.getUniqueKey()) { at.setPk(true); at.setUse(true); } if (extendedFieldSchemaInfo.getMultivalued() && !Geometry.class.isAssignableFrom(at.getType())) { at.setType(String.class); } at.setEmpty(founds == 0); solrAttributes.add(at); } else { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.log(Level.FINE, "Skipping attribute " + fty.getName() + " as we don't know how to map its type to a java object " + fty.getClassName()); } } } } // Reorder fields: empty after List<BeanComparator> sortFields = Arrays.asList(new BeanComparator("empty"), new BeanComparator("name")); ComparatorChain multiSort = new ComparatorChain(sortFields); Collections.sort(solrAttributes, multiSort); } catch (Exception ex) { LOGGER.log(Level.SEVERE, ex.getMessage(), ex); } } return solrAttributes; }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
@Override protected List<Name> createTypeNames() throws IOException { try {//from www. j a v a 2s. c o m if (typeNames == null || typeNames.isEmpty()) { typeNames = new ArrayList<Name>(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.addFacetField(field); query.setFacet(true); query.setFacetMinCount(1); query.setFacetSort(FacetParams.FACET_SORT_INDEX); query.setRows(0); query.setParam("omitHeader", true); QueryResponse rsp = solrServer.query(query); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.log(Level.FINE, "SOLR query done: " + query.toString()); } List<Count> uniqueFacetFields = rsp.getFacetFields().get(0).getValues(); for (Count field : uniqueFacetFields) { typeNames.add(new NameImpl(namespaceURI, field.getName())); } } } catch (Exception ex) { LOGGER.log(Level.SEVERE, ex.getMessage(), ex); } return typeNames; }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
/** * Builds the SolrJ query with support of subset of fields, limit/offset, sorting, OGC filter * encoding and viewParams <br>/*ww w .j av a 2s . c o m*/ * The SOLR query always need the order by PK field to enable pagination and efficient data * retrieving <br> * Currently only additional "q" and "fq" SOLR parameters can be passed using vireParams, this * conditions are added in AND with others * * @param featureType the feature type to query * @param q the OGC query to translate in SOLR request * * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS} * */ protected SolrQuery select(SimpleFeatureType featureType, Query q) { SolrQuery query = new SolrQuery(); query.setParam("omitHeader", true); try { // Column names if (q.getPropertyNames() != null) { for (String prop : q.getPropertyNames()) { query.addField(prop); } } query.setQuery("*:*"); // Encode limit/offset, if necessary if (q.getStartIndex() != null && q.getStartIndex() >= 0) { query.setStart(q.getStartIndex()); } if (q.getMaxFeatures() > 0) { query.setRows(q.getMaxFeatures()); } // Sort ORDER naturalSortOrder = ORDER.asc; if (q.getSortBy() != null) { for (SortBy sort : q.getSortBy()) { if (sort.getPropertyName() != null) { query.addSort(sort.getPropertyName().getPropertyName(), sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc); } else { naturalSortOrder = sort.getSortOrder().equals(SortOrder.ASCENDING) ? ORDER.asc : ORDER.desc; } } } // Always add natural sort by PK to support pagination query.addSort(getPrimaryKey(featureType.getTypeName()).getName(), naturalSortOrder); // Encode OGC filer FilterToSolr f2s = initializeFilterToSolr(featureType); String fq = this.field + ":" + featureType.getTypeName(); Filter simplified = SimplifyingFilterVisitor.simplify(q.getFilter()); String ffq = f2s.encodeToString(simplified); if (ffq != null && !ffq.isEmpty()) { fq = fq + " AND " + ffq; } query.setFilterQueries(fq); // Add viewpPrams addViewparams(q, query); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } return query; }
From source file:org.geotools.data.solr.SolrDataStore.java
License:Open Source License
/** * Builds the SolrJ count query with support of limit/offset, OGC filter encoding and viewParams <br> * Currently only additional "q" and "fq" SOLR parameters can be passed using viewParams, this * conditions are added in AND with others * //from w w w. j a v a2 s.co m * @param featureType the feature type to query * @param q the OGC query to translate in SOLR request * * @see {@link Hints#VIRTUAL_TABLE_PARAMETERS} * */ protected SolrQuery count(SimpleFeatureType featureType, Query q) { SolrQuery query = new SolrQuery(); query.setParam("omitHeader", true); query.setQuery("*:*"); query.setFields(this.getPrimaryKey(featureType.getName().getLocalPart()).getName()); try { // Encode limit/offset, if necessary if (q.getStartIndex() != null && q.getStartIndex() >= 0) { query.setStart(q.getStartIndex()); } query.setRows(0); // Encode OGC filer FilterToSolr f2s = initializeFilterToSolr(featureType); String fq = this.field + ":" + featureType.getTypeName(); String ffq = f2s.encodeToString(q.getFilter()); if (ffq != null && !ffq.isEmpty()) { fq = fq + " AND " + ffq; } query.setFilterQueries(fq); // Add viewparams parameters addViewparams(q, query); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } return query; }
From source file:org.hara.sodra.index.SodraServer.java
License:Apache License
public SolrDocumentList search(String query) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); QueryResponse response = client.query(indexName, solrQuery); return response.getResults(); }
From source file:org.hbird.business.archive.solr.SolrProducer.java
License:Apache License
private List<EntityInstance> doInitializationRequest(DataRequest body, String request) { SolrQuery query = new SolrQuery(request); query.setRows(1);/*from ww w .jav a 2 s .c o m*/ query.setSortField(endpoint.getSortField(), endpoint.getSortOrder()); /** Configure facets. */ query.setFacet(true); query.setQuery(request); query.setFacetSort(StandardArguments.COUNT); query.setFacetLimit(-1); query.setFacetMissing(false); query.setFacetMinCount(1); query.addFacetField(StandardArguments.NAME); query.setQueryType("basic"); List<EntityInstance> results = new ArrayList<EntityInstance>(); QueryResponse response; try { response = endpoint.getServer().query(query); if (response.getStatus() != 0) { LOG.error("Failed to execute retrieval request. Failed with status '{}'.", response.getStatus()); } if (response.getFacetFields() != null) { /** For each facet, retrieve 'rows' samples. */ for (FacetField facetfield : response.getFacetFields()) { if (facetfield.getValues() != null) { LOG.info("Found " + facetfield.getValueCount() + " entries for facet value " + facetfield.getName()); for (Count count : facetfield.getValues()) { String applicableTo = ""; if (body.hasArgumentValue(StandardArguments.APPLICABLE_TO)) { applicableTo = body.getArgumentValue(StandardArguments.APPLICABLE_TO, String.class); } SolrQuery sampleQuery = new SolrQuery("name:\"" + count.getName() + "\"" + createTimestampElement(body.getFrom(), body.getTo()) + createIsApplicableToElement(applicableTo)); LOG.info("Using sample query '" + sampleQuery + "' to get facet " + count.getName()); sampleQuery.setRows(body.getRows()); sampleQuery.setSortField(StandardArguments.TIMESTAMP, ORDER.desc); sampleQuery.setQueryType("basic"); for (EntityInstance newObj : retrieve(sampleQuery)) { results.add(newObj); LOG.info("Added object '" + newObj.getID() + "'"); } } } } } } catch (Exception e) { LOG.error("Failed to handle initialization request; query: '{}'.", request, e); } return results; }
From source file:org.hoteia.qalingo.core.solr.service.CatalogCategorySolrService.java
License:Apache License
public CatalogCategoryResponseBean searchCatalogCategory(String searchBy, String searchText, String facetField) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("rows", ROWS_DEFAULT_VALUE); if (StringUtils.isEmpty(searchBy)) { throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!"); }// w ww . j a v a 2s . c o m if (StringUtils.isEmpty(searchText)) { solrQuery.setQuery(searchBy + ":*"); } else { solrQuery.setQuery(searchBy + ":" + searchText + "*"); } if (StringUtils.isNotEmpty(facetField)) { solrQuery.setFacet(true); solrQuery.setFacetMinCount(1); solrQuery.setFacetLimit(8); solrQuery.addFacetField(facetField); } logger.debug("QueryRequest solrQuery: " + solrQuery); SolrRequest request = new QueryRequest(solrQuery, METHOD.POST); QueryResponse response = new QueryResponse(catalogCategorySolrServer.request(request), catalogCategorySolrServer); logger.debug("QueryResponse Obj: " + response.toString()); List<CatalogCategorySolr> solrList = response.getBeans(CatalogCategorySolr.class); CatalogCategoryResponseBean catalogCategoryResponseBean = new CatalogCategoryResponseBean(); catalogCategoryResponseBean.setCatalogCategorySolrList(solrList); if (StringUtils.isNotEmpty(facetField)) { List<FacetField> solrFacetFieldList = response.getFacetFields(); catalogCategoryResponseBean.setCatalogCategorySolrFacetFieldList(solrFacetFieldList); } return catalogCategoryResponseBean; }