List of usage examples for org.apache.solr.common SolrDocument getFieldValuesMap
public Map<String, Collection<Object>> getFieldValuesMap()
From source file:com.smartitengineering.dao.solr.impl.DefaultSolrDao.java
License:Open Source License
@Override public SearchResult<MultivalueMap<String, Object>> getResult(SolrParams query) { boolean success = true; List<MultivalueMap<String, Object>> list = new ArrayList<MultivalueMap<String, Object>>(); SearchResult<MultivalueMap<String, Object>> result = null; try {/*from ww w . ja va 2 s .c om*/ final SolrServer solrServer = serverFactory.getSolrServer(); QueryResponse response = solrServer.query(query); success = response.getStatus() == 0 && success; if (success) { SolrDocumentList documentList = response.getResults(); if (logger.isInfoEnabled()) { logger.info("Solr Document List " + documentList); } if (documentList.getMaxScore() == null) { result = new SearchResult<MultivalueMap<String, Object>>(list, documentList.getNumFound()); } else { result = new SearchResult<MultivalueMap<String, Object>>(list, documentList.getNumFound(), documentList.getMaxScore()); } for (SolrDocument document : documentList) { MultivalueMap<String, Object> map = new MultivalueMapImpl<String, Object>(); list.add(map); Map<String, Collection<Object>> values = document.getFieldValuesMap(); for (String key : values.keySet()) { Collection<Object> oValues = values.get(key); for (Object value : oValues) { map.addValue(key, value); } } } } } catch (Exception ex) { logger.error("Could not search from solr index", ex); success = false; } if (result == null) { result = new SearchResult<MultivalueMap<String, Object>>(list); } return result; }
From source file:com.villemos.ispace.consolidator.ReferenceBooster.java
License:Open Source License
protected void configureExchange(Exchange exchange, SolrDocument document) { /** Iterate through all solr fields and set them in the header. */ for (String key : document.getFieldValuesMap().keySet()) { exchange.getIn().setHeader(key, document.getFieldValue(key)); }/*from w w w . java 2 s .co m*/ }
From source file:edu.cornell.mannlib.vitro.webapp.searchengine.solr.SolrSearchResultDocumentList.java
License:Open Source License
private static SearchResultDocument convertToSearchResultDocument(SolrDocument solrDoc) { return new BaseSearchResultDocument((String) solrDoc.getFieldValue("DocId"), solrDoc.getFieldValuesMap()); }
From source file:influent.server.search.SolrBaseSearchIterator.java
License:MIT License
protected List<FL_Property> getPropertiesFromDocument(SolrDocument sd, String type, List<FL_PropertyDescriptor> descriptors) { List<FL_Property> props = new ArrayList<FL_Property>(); //Read and build properties. Map<String, Collection<Object>> docValues = sd.getFieldValuesMap(); for (FL_PropertyDescriptor prop : descriptors) { String propKey = prop.getKey(); String solrKey = null;/*from w w w .j av a2s. co m*/ for (FL_TypeMapping typeMapping : prop.getMemberOf()) { if (typeMapping.getType().equals(type)) { solrKey = typeMapping.getMemberKey(); break; } } if (propKey == null || solrKey == null) { continue; } if ("score".equals(solrKey)) { continue; //Skip the score, it does not belong in the entity object } String[] sortFields = _query.getSortFields(); if (sortFields == null) { sortFields = new String[0]; } else { for (int i = 0; i < sortFields.length; i++) { sortFields[i] = Arrays.asList(sortFields[i].split(" ")).get(0); } } // Test to see if the property is set hidden, or if it's hidden by Level of Detail boolean isHidden = prop.getLevelOfDetail().equals(FL_LevelOfDetail.HIDDEN) || (_levelOfDetail.equals(FL_LevelOfDetail.SUMMARY) && prop.getLevelOfDetail().equals(FL_LevelOfDetail.FULL) && Arrays.asList(sortFields).contains(solrKey)); if (_levelOfDetail.equals(FL_LevelOfDetail.SUMMARY) && prop.getLevelOfDetail().equals(FL_LevelOfDetail.FULL) && !Arrays.asList(sortFields).contains(solrKey)) { continue; } List<Object> dataList = new ArrayList<Object>(); if (prop.getPropertyType() == FL_PropertyType.GEO) { // Handle GEO composite properties List<Object> textValues = getCompositeFieldValues(docValues, propKey, type, "text"); List<Object> ccValues = getCompositeFieldValues(docValues, propKey, type, "cc"); List<Object> latValues = getCompositeFieldValues(docValues, propKey, type, "lat"); List<Object> lonValues = getCompositeFieldValues(docValues, propKey, type, "lon"); // Assume we have the same number of values in all lists. for (int i = 0; i < latValues.size(); i++) { FL_GeoData.Builder geoDataBuilder = FL_GeoData.newBuilder() .setText(textValues != null ? (String) textValues.get(i) : null) .setCc(ccValues != null ? (String) ccValues.get(i) : null) .setLat(latValues != null ? parseLatLon(latValues.get(i)) : null) .setLon(lonValues != null ? parseLatLon(lonValues.get(i)) : null); dataList.add(geoDataBuilder.build()); } } else { // Handle everything else dataList = getPropertyValuesFromDocument(docValues, prop, type); } if (dataList == null || dataList.isEmpty()) { continue; } Object range; // Create a list range, or a singleton range depending on how many values we got if (dataList.size() > 1) { range = FL_ListRange.newBuilder().setType(prop.getPropertyType()).setValues(dataList).build(); } else { range = FL_SingletonRange.newBuilder().setType(prop.getPropertyType()).setValue(dataList.get(0)) .build(); } // Add the property props.add(new PropertyHelper(prop.getKey(), prop.getFriendlyText(), null, null, prop.getTags(), isHidden, range)); } return props; }