You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@nutch.apache.org by Haya AL-Tuwaijri <ha...@hotmail.com> on 2012/02/18 06:49:43 UTC

Tika with nutch

Hi all ,,

I'm developing a plug-in in Nutch that implement HtmlParserFilter, I want to use Tika tool kit to be able to convert the web page to plain text to be processed.
I knew that Tika is now integrated with Nutch since version 1.1, so I didn't download anything and start coding.

found that BodyContentHandler may help so I use this code:

//=======
//import packages:

import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.Parser;
import org.apache.tika.io.TikaInputStream;

//=====


public ParseResult filter(Content content, ParseResult parseResult, HTMLMetaTags metaTags, DocumentFragment doc) 
      {
Metadata metadata = new Metadata();
BodyContentHandler texthandler = new BodyContentHandler();
Parser parser = new AutoDetectParser();
InputStream in = TikaInputStream.get(content.getContent());
parser.parse(in, texthandler, metadata, new ParseContext());    
LOG.info("Content: " + texthandler.toString());
LOG.info("is Empty? " + texthandler.toString().isEmpty());
     }

Now, The content is always empty, and isEmpty() gives me true all the time !

I don't know why, I've searched a lot, resources are rare, so I asked this question here in the mailing list

Thanks in advanced and I appreciated :)

 		 	   		  

Re: Tika with nutch

Posted by Lewis John Mcgibbney <le...@gmail.com>.
Mmmm... this is really a Tika question, this probably shadows why you have
received very little response from the community unfortunately.

So the problem is that you are always getting back isEmpty indicating that
_nothing_ is being produced as an output from your parser.

I would add in a try catch, like we do in TikaParser to either feed content
the output stream or catch when there is no content to be fed.

Maybe you should have a look at
http://tika.apache.org/1.0/parser.html

there is content there on the BodyContentHandler as well as the various
readers and writers you need to get your implementation up and running.

2012/2/19 HaYa aziz <ha...@hotmail.com>

>
>
> I try to use writer also without any luck !
>
> StringWriter writer = new StringWriter();
> Metadata metadata = new Metadata();
> ContentHandler texthandler = new BodyContentHandler(writer);
> Parser parser = new AutoDetectParser();
> InputStream in = TikaInputStream.get(content.getContent());
> parser.parse(in, texthandler, metadata, new ParseContext());
> LOG.info("Content: " + writer .toString());
> LOG.info("is Empty? " + writer .toString().isEmpty());
>
>
> Where is the problem !!!!
>
>
> > To: user@nutch.apache.org
> > Subject: Tika with nutch
> > Date: Sat, 18 Feb 2012 08:49:43 +0300
> >
> >
> > Hi all ,,
> >
> > I'm developing a plug-in in Nutch that implement HtmlParserFilter, I
> want to use Tika tool kit to be able to convert the web page to plain text
> to be processed.
> > I knew that Tika is now integrated with Nutch since version 1.1, so I
> didn't download anything and start coding.
> >
> > found that BodyContentHandler may help so I use this code:
> >
> > //=======
> > //import packages:
> >
> > import org.apache.tika.sax.BodyContentHandler;
> > import org.apache.tika.metadata.Metadata;
> > import org.apache.tika.parser.ParseContext;
> > import org.apache.tika.parser.AutoDetectParser;
> > import org.apache.tika.parser.Parser;
> > import org.apache.tika.io.TikaInputStream;
> >
> > //=====
> >
> >
> > public ParseResult filter(Content content, ParseResult parseResult,
> HTMLMetaTags metaTags, DocumentFragment doc)
> >       {
> > Metadata metadata = new Metadata();
> > BodyContentHandler texthandler = new BodyContentHandler();
> > Parser parser = new AutoDetectParser();
> > InputStream in = TikaInputStream.get(content.getContent());
> > parser.parse(in, texthandler, metadata, new ParseContext());
> > LOG.info("Content: " + texthandler.toString());
> > LOG.info("is Empty? " + texthandler.toString().isEmpty());
> >      }
> >
> > Now, The content is always empty, and isEmpty() gives me true all the
> time !
> >
> > I don't know why, I've searched a lot, resources are rare, so I asked
> this question here in the mailing list
> >
> > Thanks in advanced and I appreciated :)
> >
> >
>
>



-- 
*Lewis*

RE: Tika with nutch

Posted by HaYa aziz <ha...@hotmail.com>.

I try to use writer also without any luck !

StringWriter writer = new StringWriter();
Metadata metadata = new Metadata();
ContentHandler texthandler = new BodyContentHandler(writer);
Parser parser = new AutoDetectParser();
InputStream in = TikaInputStream.get(content.getContent());
parser.parse(in, texthandler, metadata, new ParseContext());    
LOG.info("Content: " + writer .toString());
LOG.info("is Empty? " + writer .toString().isEmpty());


Where is the problem !!!!
 

> To: user@nutch.apache.org
> Subject: Tika with nutch
> Date: Sat, 18 Feb 2012 08:49:43 +0300
> 
> 
> Hi all ,,
> 
> I'm developing a plug-in in Nutch that implement HtmlParserFilter, I want to use Tika tool kit to be able to convert the web page to plain text to be processed.
> I knew that Tika is now integrated with Nutch since version 1.1, so I didn't download anything and start coding.
> 
> found that BodyContentHandler may help so I use this code:
> 
> //=======
> //import packages:
> 
> import org.apache.tika.sax.BodyContentHandler;
> import org.apache.tika.metadata.Metadata;
> import org.apache.tika.parser.ParseContext;
> import org.apache.tika.parser.AutoDetectParser;
> import org.apache.tika.parser.Parser;
> import org.apache.tika.io.TikaInputStream;
> 
> //=====
> 
> 
> public ParseResult filter(Content content, ParseResult parseResult, HTMLMetaTags metaTags, DocumentFragment doc) 
>       {
> Metadata metadata = new Metadata();
> BodyContentHandler texthandler = new BodyContentHandler();
> Parser parser = new AutoDetectParser();
> InputStream in = TikaInputStream.get(content.getContent());
> parser.parse(in, texthandler, metadata, new ParseContext());    
> LOG.info("Content: " + texthandler.toString());
> LOG.info("is Empty? " + texthandler.toString().isEmpty());
>      }
> 
> Now, The content is always empty, and isEmpty() gives me true all the time !
> 
> I don't know why, I've searched a lot, resources are rare, so I asked this question here in the mailing list
> 
> Thanks in advanced and I appreciated :)
> 
>