Changeset 6319
- Timestamp:
- 06/23/15 11:03:35 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/MetadataImporter.java
r6312 r6319 14 14 import java.text.SimpleDateFormat; 15 15 import java.util.ArrayList; 16 import java.util.Arrays;17 16 import java.util.Date; 18 17 import java.util.HashMap; … … 28 27 import org.apache.commons.cli.PosixParser; 29 28 import org.apache.commons.io.FileUtils; 29 import org.apache.solr.client.solrj.SolrQuery; 30 30 import org.apache.solr.client.solrj.SolrServerException; 31 31 import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrServer; 32 32 import org.apache.solr.client.solrj.util.ClientUtils; 33 import org.apache.solr.common.SolrDocumentList; 33 34 import org.apache.solr.common.SolrInputDocument; 34 35 import org.apache.solr.common.params.MapSolrParams; … … 155 156 sendDocs(); 156 157 } 158 solrServer.commit(); 157 159 updateDocumentHierarchy(); 158 160 } … … 461 463 private void updateDocumentHierarchy() throws SolrServerException, MalformedURLException, IOException { 462 464 LOG.info(ResourceStructureGraph.printStatistics(0)); 465 Boolean updatedDocs = false; 463 466 List<SolrInputDocument> updateDocs = new ArrayList<SolrInputDocument>(); 464 467 Iterator<CmdiVertex> vertexIter = ResourceStructureGraph.getFoundVertices().iterator(); … … 468 471 List<String> outgoingVertexNames = ResourceStructureGraph.getOutgoingVertexNames(vertex); 469 472 473 SolrQuery query; 470 474 // update vertex if changes are necessary (necessary if non-default weight or edges to other resources) 471 475 if(vertex.getHierarchyWeight() != 0 || !incomingVertexNames.isEmpty() || !outgoingVertexNames.isEmpty()) { 472 SolrInputDocument doc = new SolrInputDocument(); 473 doc.setField(FacetConstants.FIELD_ID, Arrays.asList(vertex.getId())); 476 updatedDocs = true; 477 478 // get document 479 query = new SolrQuery(); 480 query.set("q", FacetConstants.FIELD_ID+":"+vertex.getId()); 481 SolrDocumentList response = solrServer.query(query).getResults(); 482 483 // empty result set? may be the case if CMDI file was rejected due to missing ResourceProxys in {@link #processCmdi(File, DataRoot, CMDIDataProcessor) processCmdi} 484 if(response.size() == 0) { 485 LOG.debug("Doc "+vertex.getId()+" not found while updating document hierarchy information"); 486 continue; 487 } 488 SolrInputDocument doc = ClientUtils.toSolrInputDocument(response.get(0)); 474 489 475 490 if(vertex.getHierarchyWeight() != 0) { 476 Map<String, Integer> partialUpdate = new HashMap<String, Integer>(); 477 partialUpdate.put("set", Math.abs(vertex.getHierarchyWeight())); 478 doc.addField(FacetConstants.FIELD_HIERARCHY_WEIGHT, partialUpdate); 491 doc.setField(FacetConstants.FIELD_HIERARCHY_WEIGHT, Math.abs(vertex.getHierarchyWeight())); 479 492 } 480 493 481 494 if(!incomingVertexNames.isEmpty()) { 482 Map<String, List<String>> partialUpdate = new HashMap<String, List<String>>(); 483 partialUpdate.put("set", incomingVertexNames); 484 doc.setField(FacetConstants.FIELD_HAS_PART, partialUpdate); 495 doc.setField(FacetConstants.FIELD_HAS_PART, incomingVertexNames); 485 496 doc.setField(FacetConstants.FIELD_HAS_PART_COUNT, incomingVertexNames.size()); 486 497 } 487 498 488 499 if(!outgoingVertexNames.isEmpty()) { 489 Map<String, List<String>> partialUpdate = new HashMap<String, List<String>>(); 490 partialUpdate.put("set", outgoingVertexNames); 491 doc.setField(FacetConstants.FIELD_IS_PART_OF, partialUpdate); 500 doc.setField(FacetConstants.FIELD_IS_PART_OF, outgoingVertexNames); 492 501 } 493 502 updateDocs.add(doc); … … 508 517 } 509 518 } 510 solrServer.commit(); 519 520 if(updatedDocs) { 521 solrServer.commit(); 522 } 511 523 512 524 ResourceStructureGraph.clearResourceGraph();
Note: See TracChangeset
for help on using the changeset viewer.