Try using the logger, this way you can check hadoop.log for your output.

import:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

declare:
public static Log LOG = LogFactory.getLog(SolrWriter.class);

use:
LOG.info("bla bla");





On Thursday 13 January 2011 14:28:21 PEEYUSH CHANDEL wrote:
> hi markus
> 
> here is my modified SolarWriter class,please check it and correct me
> if i am doing something wrong.
> 
> i tried this code but nothing happens.
> 
> package org.apache.nutch.indexer.solr;
> 
> import java.io.IOException;
> import java.util.ArrayList;
> import java.util.List;
> import java.util.Map.Entry;
> import java.util.Iterator;
> import java.sql.*;
> 
> import org.apache.hadoop.mapred.JobConf;
> import org.apache.nutch.indexer.NutchDocument;
> import org.apache.nutch.indexer.NutchField;
> import org.apache.nutch.indexer.NutchIndexWriter;
> import org.apache.solr.client.solrj.SolrServer;
> import org.apache.solr.client.solrj.SolrServerException;
> import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
> import org.apache.solr.common.SolrInputDocument;
> 
> public class SolrWriter implements NutchIndexWriter {
> 
>   private SolrServer solr;
>   private SolrMappingReader solrMapping;
> 
>   private final List<SolrInputDocument> inputDocs =
>     new ArrayList<SolrInputDocument>();
> 
>   private int commitSize;
> 
>   public void open(JobConf job, String name) throws IOException {
>     solr = new CommonsHttpSolrServer(job.get(SolrConstants.SERVER_URL));
>     commitSize = job.getInt(SolrConstants.COMMIT_SIZE, 1000);
>     solrMapping = SolrMappingReader.getInstance(job);
>   }
> 
>   public void write(NutchDocument doc) throws IOException {
>     final SolrInputDocument inputDoc = new SolrInputDocument();
>     for(final Entry<String, NutchField> e : doc) {
>       for (final Object val : e.getValue().getValues()) {
>         inputDoc.addField(solrMapping.mapKey(e.getKey()), val,
> e.getValue().getWeight());
>         String sCopy = solrMapping.mapCopyKey(e.getKey());
>         if (sCopy != e.getKey()) {
>               inputDoc.addField(sCopy, val, e.getValue().getWeight());
>         }
>       }
>     }
>     inputDoc.setDocumentBoost(doc.getWeight());
>     inputDocs.add(inputDoc);
> 
> //here is my modified code
> 
>     SolrInputDocument abc;
>     Iterator it=inputDocs.iterator();
>     while(it.hasNext())
>     {
>       abc=(SolrInputDocument)it.next();
>       String test=(abc.toString());
> 
>         Connection conn = null;
>         String url = "jdbc:mysql://localhost:3306/";
>         String dbName = "data";
>         String driver = "com.mysql.jdbc.Driver";
>         String userName = "root";
>         String password = "passwd";
>         try {
>             Class.forName(driver).newInstance();
>             conn =
> DriverManager.getConnection(url+dbName,userName,password);
> System.out.println("Connected to the database");
> 
>                       java.sql.Statement s = conn.createStatement();
>                       int r = s.executeUpdate("INSERT INTO data(data)
> VALUES('"+test+"')");
> 
>             System.out.println("Done");
>        conn.close();
>             System.out.println("Disconnected from database");
> 
>               }
>               catch (Exception e) {
>                       System.out.println(e);
>                       System.exit(0);
>                       }
> 
>     }
> 
>     if (inputDocs.size() > commitSize) {
>       try {
>         solr.add(inputDocs);
> 
>       } catch (final SolrServerException e) {
>         throw makeIOException(e);
>       }
>       inputDocs.clear();
>     }
>   }
> 
>   public void close() throws IOException {
>     try {
>       if (!inputDocs.isEmpty()) {
>         solr.add(inputDocs);
>         inputDocs.clear();
>       }
>       // solr.commit();
>     } catch (final SolrServerException e) {
>       throw makeIOException(e);
>     }
>   }
> 
>   public static IOException makeIOException(SolrServerException e) {
>     final IOException ioe = new IOException();
>     ioe.initCause(e);
>     return ioe;
>   }
> 
> }
> 
> -Thanks you very much
> 
> On 1/13/11, Markus Jelsma <[email protected]> wrote:
> > public void write gets called for each NutchDocument and collects them in
> > inputDocs. You could, after line 60, call a customer method to read all
> > fields
> > and create a SQL insert statement out of it.
> > 
> > On Thursday 13 January 2011 13:55:14 PEEYUSH CHANDEL wrote:
> >> hi markus,
> >> 
> >> i try to modify the SolrWriter.java class and place my mysql connecter
> >> their but nothing
> >> 
> >> happens  so can please explain a little more with example of code that
> >> exactly which
> >> 
> >> part of SolrWriter class is going to be replace by mysql connecter.
> >> 
> >> -Thanks You Very Much
> >> 
> >> On 1/13/11, Markus Jelsma <[email protected]> wrote:
> >> > Here's the class you need to look at:
> >> > http://svn.apache.org/viewvc/nutch/branches/branch-1.2/src/java/org/ap
> >> > ach e/nutch/indexer/solr/SolrWriter.java?view=markup
> >> > 
> >> >> Modifying the Solr index writer to use a MySQL connector is surely
> >> >> the easiest short cut.
> >> >> 
> >> >> > hi O.Klein
> >> >> > 
> >> >> > thanks for the answer but i am using nutch 1.2 so any solution for
> >> >> > this version.
> >> >> > 
> >> >> > On 1/13/11, O. Klein <[email protected]> wrote:
> >> >> > > Nutch 2.0 supports storage of data in MySQL DB.
> >> >> > > 
> >> >> > > But that version is not for production yet.
> >> >> > > 
> >> >> > > Check
> >> >> > > http://techvineyard.blogspot.com/2010/12/build-nutch-20.html on
> >> >> > > how to get it running.
> >> >> > > --
> >> >> > > View this message in context:
> >> >> > > http://lucene.472066.n3.nabble.com/Connecting-MySQL-to-Apache-Nut
> >> >> > > ch- tp2 24 3983p2244263.html Sent from the Nutch - User mailing
> >> >> > > list archive at
> >> >> > > Nabble.com.
> > 
> > --
> > Markus Jelsma - CTO - Openindex
> > http://www.linkedin.com/in/markus17
> > 050-8536620 / 06-50258350

-- 
Markus Jelsma - CTO - Openindex
http://www.linkedin.com/in/markus17
050-8536620 / 06-50258350

Reply via email to