package org.nextprot.api.tasks.solr;
import java.util.List;
import org.nextprot.api.commons.exception.NPreconditions;
import org.nextprot.api.core.domain.Publication;
import org.nextprot.api.core.service.PublicationService;
import org.nextprot.api.tasks.solr.indexer.PublicationSolrindexer;
import org.nextprot.api.tasks.solr.indexer.SolrIndexer;
public class GenerateSolrPublicationIndex extends GenerateSolrIndex {
public static void main(String[] args) {
GenerateSolrPublicationIndex i = new GenerateSolrPublicationIndex();
i.launch(args);
}
@Override
public void start(String[] args) {
PublicationService publicationService = getBean(PublicationService.class);
int pubcnt = 0;
String solrServer = System.getProperty("solr.server");
NPreconditions.checkNotNull(solrServer, "Please set solr.server variable. For example: java -Dsolr.server=http://localhost:8983/solr/nppublications1");
logger.info("Solr server: " + solrServer);
SolrIndexer<Publication> indexer = new PublicationSolrindexer(solrServer);
// Remove previous indexes
logger.info("removing all solr publication records");
indexer.clearDatabase("");
List<Long> allpubids;
logger.info("getting all publications from API");
long start = System.currentTimeMillis();
allpubids = publicationService.findAllPublicationIds();
logger.info("indexing " + allpubids.size() + " publications...");
for (Long id : allpubids) {
Publication currpub = publicationService.findPublicationById(id);
if(currpub.getPublicationType().equals("ARTICLE")) {
indexer.add(currpub);
pubcnt++;
}
if((pubcnt % 5000)==0)
logger.info(pubcnt + "/" + allpubids.size() + " publications done");
}
indexer.addRemaing();
logger.info("comitting");
indexer.commit();
logger.info(pubcnt + " publications indexed in " + (System.currentTimeMillis()-start)/1000 + " seconds...END");
}
}