package org.nextprot.api.tasks.solr; import java.util.List; import org.nextprot.api.commons.exception.NPreconditions; import org.nextprot.api.core.domain.CvTerm; import org.nextprot.api.core.service.TerminologyService; import org.nextprot.api.tasks.solr.indexer.CvTermSolrIndexer; import org.nextprot.api.tasks.solr.indexer.SolrIndexer; public class GenerateSolrTerminologyIndex extends GenerateSolrIndex { public static void main(String[] args) { GenerateSolrTerminologyIndex i = new GenerateSolrTerminologyIndex(); i.launch(args); } @Override public void start(String[] args) { TerminologyService terminologyService = getBean(TerminologyService.class); int termcnt = 0; String solrServer = System.getProperty("solr.server"); NPreconditions.checkNotNull(solrServer, "Please set solr.server variable. For example: java -Dsolr.server=\"http://localhost:8983/solr/npcvs1\""); logger.info("Solr server: " + solrServer); String ontologyToReindex = System.getProperty("solr.ontology"); // eg: java -Dsolr.ontology="UniprotFamilyCv" (don't forget CamelCasing) SolrIndexer<CvTerm> indexer = new CvTermSolrIndexer(solrServer); List<CvTerm> allterms; if (ontologyToReindex == null) { // No arg: index all ontologies System.err.println("indexing: all ontologies"); logger.info("indexing all terminologies"); indexer.clearDatabase(""); allterms = terminologyService.findAllCVTerms(); } else { // Index ontology given as VM argument System.err.println("indexing: " + ontologyToReindex); logger.info("indexing terminology: " + ontologyToReindex); indexer.clearDatabase("filters:" + ontologyToReindex); allterms = terminologyService.findCvTermsByOntology(ontologyToReindex); } for (CvTerm term : allterms) { indexer.add(term); termcnt++; if((termcnt % 3000)==0) logger.info(termcnt + "/" + allterms.size() + " cv terms done"); } indexer.addRemaing(); logger.info("comitting"); indexer.commit(); logger.info(termcnt + " terms indexed...END"); } }