String keyIdField = getKeyFieldId(collection); SolrQuery solrQuery = new SolrQuery(query.getQuery()) .addField(keyIdField) .setIncludeScore(true) .setStart(query.getOffset())
solrQuery.addField(returnField.trim());
for (final String field : context.getProperty(SOLR_PARAM_FIELD_LIST).evaluateAttributeExpressions(flowFileResponse).getValue() .split(",")) { solrQuery.addField(field.trim());
switch (select) { case ID: query.addField(fieldMapper.getDocumentIdField()); fieldQuery.removeAllSelectedFields(); break; case QUERY: if (fieldQuery.getSelectedFields().isEmpty()) { query.addField(fieldMapper.getDocumentIdField()); } else { query.addField("*"); query.addField("*"); break; default: query.addField("score"); fieldQuery.addSelectedField(RdfResourceEnum.resultScore.getUri());
/** * Get all items already in the index which are viable to change visibility * due to an embargo. Only consider those which haven't been modified * anyways since the last update, so they aren't updated twice in one import * run. * * @param last * maximum date for an item to be considered for an update * @return Iterator over list of items which might have changed their * visibility since the last update. * @throws DSpaceSolrIndexerException */ private Iterator<Item> getItemsWithPossibleChangesBefore(Date last) throws DSpaceSolrIndexerException { try { SolrQuery params = new SolrQuery("item.willChangeStatus:true").addField("item.id"); SolrDocumentList documents = DSpaceSolrSearch.query(solrServerResolver.getServer(), params); List<Item> items = new LinkedList<Item>(); for (int i = 0; i < documents.getNumFound(); i++) { Item item = itemService.find(context, UUID.fromString((String) documents.get(i).getFieldValue("item.id"))); if (item.getLastModified().before(last)) { items.add(item); } } return items.iterator(); } catch (SolrServerException | SQLException | DSpaceSolrException ex) { throw new DSpaceSolrIndexerException(ex.getMessage(), ex); } }
/** * Check if an item is already indexed. Using this, it is possible to check * if withdrawn or nondiscoverable items have to be indexed at all. * * @param item * Item that should be checked for its presence in the index. * @return has it been indexed? */ private boolean checkIfIndexed(Item item) { SolrQuery params = new SolrQuery("item.id:" + item.getID().toString()).addField("item.id"); try { SolrDocumentList documents = DSpaceSolrSearch.query(solrServerResolver.getServer(), params); return documents.getNumFound() == 1; } catch (DSpaceSolrException | SolrServerException e) { return false; } } /**
@Override public Set<String> getBroaderConcepts(String id) throws ClassifierException { LinkedHashSet<String> broaderConcepts = new LinkedHashSet<String>(); if (broaderField == null) { return broaderConcepts; } SolrServer solrServer = getActiveSolrServer(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery(conceptUriField + ":" + ClientUtils.escapeQueryChars(id)); query.addField(broaderField); try { for (SolrDocument result : solrServer.query(query).getResults()) { // there should be only one results Collection<Object> broaderFieldValues = result.getFieldValues(broaderField); if (broaderFieldValues == null) { continue; } for (Object value : broaderFieldValues) { broaderConcepts.add(value.toString()); } } } catch (SolrServerException e) { String msg = String.format("Error while fetching broader topics of '%s' on Solr Core '%s'.", id, solrCoreId); throw new ClassifierException(msg, e); } return broaderConcepts; }
@Override public Set<String> getBroaderConcepts(String id) throws ClassifierException { LinkedHashSet<String> broaderConcepts = new LinkedHashSet<String>(); if (broaderField == null) { return broaderConcepts; } SolrServer solrServer = getActiveSolrServer(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery(conceptUriField + ":" + ClientUtils.escapeQueryChars(id)); query.addField(broaderField); try { for (SolrDocument result : solrServer.query(query).getResults()) { // there should be only one results Collection<Object> broaderFieldValues = result.getFieldValues(broaderField); if (broaderFieldValues == null) { continue; } for (Object value : broaderFieldValues) { broaderConcepts.add(value.toString()); } } } catch (SolrServerException e) { String msg = String.format("Error while fetching broader topics of '%s' on Solr Core '%s'.", id, solrCoreId); throw new ClassifierException(msg, e); } return broaderConcepts; }
@Override public Set<String> getNarrowerConcepts(String broadTopicId) throws ClassifierException { LinkedHashSet<String> narrowerConcepts = new LinkedHashSet<String>(); if (broaderField == null) { return narrowerConcepts; } SolrServer solrServer = getActiveSolrServer(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY); query.addFilterQuery(broaderField + ":" + ClientUtils.escapeQueryChars(broadTopicId)); query.addField(conceptUriField); query.addSortField(conceptUriField, SolrQuery.ORDER.asc); try { for (SolrDocument result : solrServer.query(query).getResults()) { narrowerConcepts.add(result.getFirstValue(conceptUriField).toString()); } } catch (SolrServerException e) { String msg = String.format("Error while fetching narrower topics of '%s' on Solr Core '%s'.", broadTopicId, solrCoreId); throw new ClassifierException(msg, e); } return narrowerConcepts; }
q.set(SpatialParams.POINT, p.getY() + "," + p.getX()); q.set(SpatialParams.DISTANCE, Double.toString(kms)); q.addField(SearchFields.URI_FIELD_NAME); q.addField("*" + geoProperty.getLocalName()); q.addField(DISTANCE_FIELD + ":geodist()"); boolean requireContext = (contextVar != null && !contextVar.hasValue()); if(requireContext) { q.addField(SearchFields.CONTEXT_FIELD_NAME);
@Override public Set<String> getNarrowerConcepts(String broadTopicId) throws ClassifierException { LinkedHashSet<String> narrowerConcepts = new LinkedHashSet<String>(); if (broaderField == null) { return narrowerConcepts; } SolrServer solrServer = getActiveSolrServer(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY); query.addFilterQuery(broaderField + ":" + ClientUtils.escapeQueryChars(broadTopicId)); query.addField(conceptUriField); query.addSortField(conceptUriField, SolrQuery.ORDER.asc); try { for (SolrDocument result : solrServer.query(query).getResults()) { narrowerConcepts.add(result.getFirstValue(conceptUriField).toString()); } } catch (SolrServerException e) { String msg = String.format("Error while fetching narrower topics of '%s' on Solr Core '%s'.", broadTopicId, solrCoreId); throw new ClassifierException(msg, e); } return narrowerConcepts; }
/** * Check if an item is flagged visible in the index. * * @param item * Item that should be checked for its presence in the index. * @return has it been indexed? */ private boolean checkIfVisibleInOAI(Item item) { SolrQuery params = new SolrQuery("item.id:" + item.getID().toString()).addField("item.public"); try { SolrDocumentList documents = DSpaceSolrSearch.query(solrServerResolver.getServer(), params); if (documents.getNumFound() == 1) { return (boolean) documents.get(0).getFieldValue("item.public"); } else { return false; } } catch (DSpaceSolrException | SolrServerException e) { return false; } }
solrQuery.addField("*"); // select all fields solrQuery.setRows(1); // we query for the id, there is only one result String queryString = String.format("%s:%s", this.getDocumentIdField(),
String keyIdField = getKeyFieldId(collection); SolrQuery solrQuery = new SolrQuery(query.getQuery()) .addField(keyIdField) .setIncludeScore(true) .setStart(query.getOffset())
String keyIdField = getKeyFieldId(collection); SolrQuery solrQuery = new SolrQuery(query.getQuery()) .addField(keyIdField) .setIncludeScore(true) .setStart(query.getOffset())
} else { SolrQuery solrParams = new SolrQuery("*:*") .addField("item.lastmodified") .addSortField("item.lastmodified", ORDER.desc).setRows(1);
private SolrQuery runCommonQuery(RawQuery query, KeyInformation.IndexRetriever information, BaseTransaction tx, String collection, String keyIdField) throws BackendException { final SolrQuery solrQuery = new SolrQuery(query.getQuery()) .addField(keyIdField) .setIncludeScore(true) .setStart(query.getOffset()); if (query.hasLimit()) { solrQuery.setRows(Math.min(query.getLimit(), batchSize)); } else { solrQuery.setRows(batchSize); } for(final Parameter parameter: query.getParameters()) { if (parameter.value() instanceof String[]) { solrQuery.setParam(parameter.key(), (String[]) parameter.value()); } else if (parameter.value() instanceof String) { solrQuery.setParam(parameter.key(), (String) parameter.value()); } } return solrQuery; }