2011-03-24 23 views
6

¿Estoy siendo grosero o realmente no hay forma de invocar Apache Nutch a través de un código Java programáticamente? ¿Dónde está la documentación (o una guía o tutorial) sobre cómo hacer esto? Google me ha fallado. Así que en realidad probé Bing. (Sí, lo sé, patético.) ¿Ideas? Gracias por adelantado.Nutch: Invocar en Java, ¿no en la línea de comandos?

(También, si Nutch es una porquería disparar cualquier otro rastreadores escritos en Java que han demostrado ser fiables a escala de Internet con documentación real?)

+0

Por favor, dime que esta no es la respuesta. http://stackoverflow.com/questions/4340222/nutch-api-advice – ChrisJF

Respuesta

6

Si se echa un vistazo en el interior bin/nutch secuencia de comandos,' ll ver que se invoca una clase Java correspondiente a su comando:

# figure out which class to run 
if [ "$COMMAND" = "crawl" ] ; then 
    CLASS=org.apache.nutch.crawl.Crawl 
elif [ "$COMMAND" = "inject" ] ; then 
    CLASS=org.apache.nutch.crawl.Injector 
elif [ "$COMMAND" = "generate" ] ; then 
    CLASS=org.apache.nutch.crawl.Generator 
elif [ "$COMMAND" = "freegen" ] ; then 
    CLASS=org.apache.nutch.tools.FreeGenerator 
elif [ "$COMMAND" = "fetch" ] ; then 
    CLASS=org.apache.nutch.fetcher.Fetcher 
elif [ "$COMMAND" = "fetch2" ] ; then 
    CLASS=org.apache.nutch.fetcher.Fetcher2 
elif [ "$COMMAND" = "parse" ] ; then 
    CLASS=org.apache.nutch.parse.ParseSegment 
elif [ "$COMMAND" = "readdb" ] ; then 
    CLASS=org.apache.nutch.crawl.CrawlDbReader 
elif [ "$COMMAND" = "convdb" ] ; then 
    CLASS=org.apache.nutch.tools.compat.CrawlDbConverter 
elif [ "$COMMAND" = "mergedb" ] ; then 
    CLASS=org.apache.nutch.crawl.CrawlDbMerger 
elif [ "$COMMAND" = "readlinkdb" ] ; then 
    CLASS=org.apache.nutch.crawl.LinkDbReader 
elif [ "$COMMAND" = "readseg" ] ; then 
    CLASS=org.apache.nutch.segment.SegmentReader 
elif [ "$COMMAND" = "segread" ] ; then 
    echo "[DEPRECATED] Command 'segread' is deprecated, use 'readseg' instead." 
    CLASS=org.apache.nutch.segment.SegmentReader 
elif [ "$COMMAND" = "mergesegs" ] ; then 
    CLASS=org.apache.nutch.segment.SegmentMerger 
elif [ "$COMMAND" = "updatedb" ] ; then 
    CLASS=org.apache.nutch.crawl.CrawlDb 
elif [ "$COMMAND" = "invertlinks" ] ; then 
    CLASS=org.apache.nutch.crawl.LinkDb 
elif [ "$COMMAND" = "mergelinkdb" ] ; then 
    CLASS=org.apache.nutch.crawl.LinkDbMerger 
elif [ "$COMMAND" = "index" ] ; then 
    CLASS=org.apache.nutch.indexer.Indexer 
elif [ "$COMMAND" = "solrindex" ] ; then 
    CLASS=org.apache.nutch.indexer.solr.SolrIndexer 
elif [ "$COMMAND" = "dedup" ] ; then 
    CLASS=org.apache.nutch.indexer.DeleteDuplicates 
elif [ "$COMMAND" = "solrdedup" ] ; then 
    CLASS=org.apache.nutch.indexer.solr.SolrDeleteDuplicates 
elif [ "$COMMAND" = "merge" ] ; then 
    CLASS=org.apache.nutch.indexer.IndexMerger 
elif [ "$COMMAND" = "plugin" ] ; then 
    CLASS=org.apache.nutch.plugin.PluginRepository 
elif [ "$COMMAND" = "server" ] ; then 
    CLASS='org.apache.nutch.searcher.DistributedSearch$Server' 
else 
    CLASS=$COMMAND 
fi 

# run it 
exec "$JAVA" $JAVA_HEAP_MAX $NUTCH_OPTS -classpath "$CLASSPATH" $CLASS "[email protected]" 

a partir de ahí, es sólo la cuestión de mirar el API docs y, si es necesario, el código fuente para las clases.

+0

Touché buen señor! ¡Gracias! – ChrisJF

Cuestiones relacionadas