use of org.mycore.solr.index.MCRSolrIndexHandler in project mycore by MyCoRe-Org.
the class MCRSolrIndexHandlerFactory method getIndexHandler.
public MCRSolrIndexHandler getIndexHandler(Path file, BasicFileAttributes attrs, SolrClient solrClient, boolean sendContent) throws IOException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Solr: submitting file \"{} for indexing", file);
}
MCRSolrIndexHandler indexHandler;
long start = System.currentTimeMillis();
if (sendContent) {
/* extract metadata with tika */
indexHandler = new MCRSolrFileIndexHandler(file, attrs, solrClient);
} else {
SolrInputDocument doc = MCRSolrPathDocumentFactory.getInstance().getDocument(file, attrs);
indexHandler = new MCRSolrInputDocumentHandler(doc, solrClient);
}
long end = System.currentTimeMillis();
indexHandler.getStatistic().addTime(end - start);
return indexHandler;
}
use of org.mycore.solr.index.MCRSolrIndexHandler in project mycore by MyCoRe-Org.
the class MCRSolrMCRContentIndexHandler method getSubHandlers.
@Override
public List<MCRSolrIndexHandler> getSubHandlers() {
MCRSolrIndexHandler mcrSolrIndexHandler = new MCRSolrInputDocumentHandler(document, getSolrClient());
mcrSolrIndexHandler.setCommitWithin(getCommitWithin());
return Collections.singletonList(mcrSolrIndexHandler);
}
use of org.mycore.solr.index.MCRSolrIndexHandler in project mycore by MyCoRe-Org.
the class MCRSolrFilesIndexHandler method indexDerivate.
protected void indexDerivate(MCRObjectID derivateID) throws IOException {
MCRPath rootPath = MCRPath.getPath(derivateID.toString(), "/");
final MCRSolrIndexHandlerFactory ihf = MCRSolrIndexHandlerFactory.getInstance();
final List<MCRSolrIndexHandler> subHandlerList = this.subHandlerList;
final List<SolrInputDocument> docs = new ArrayList<>();
final SolrClient solrClient = this.solrClient;
Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
boolean sendContent = ihf.checkFile(file, attrs);
try {
if (sendContent) {
subHandlerList.add(ihf.getIndexHandler(file, attrs, solrClient, true));
} else {
SolrInputDocument fileDoc = MCRSolrPathDocumentFactory.getInstance().getDocument(file, attrs);
docs.add(fileDoc);
}
} catch (Exception ex) {
LOGGER.error("Error creating transfer thread", ex);
}
return super.visitFile(file, attrs);
}
});
int fileCount = subHandlerList.size() + docs.size();
LOGGER.info("Sending {} file(s) for derivate \"{}\"", fileCount, derivateID);
if (!docs.isEmpty()) {
MCRSolrInputDocumentsHandler subHandler = new MCRSolrInputDocumentsHandler(docs, solrClient);
subHandler.setCommitWithin(getCommitWithin());
this.subHandlerList.add(subHandler);
}
}
Aggregations