由于刚开始理解错误,以为搜索索引可以作为数据挖掘的输入信息,后面才发现错了,由solr/nutch/lucene形成的只是搜索索引,只要由用户提供查询关键字,然后就可以查到该关键字来自哪一篇文档,并不是一篇文档的文字列表信息,而挖掘是需要有整篇文档的文字列表(档中所有单词的集合),才能挖出其中的关联信息。
详细看了一下Nutch抓取数据后的文件:
Nutch的输出文件主要可分为crawldb、index、indexs、linkdb和segments。
Crawldb是所有需要抓取的超连接信息
(另说:存放下载的URL,及下载的日期,用来页面更新检查时间)
Linkdb中存放的是所有超连接及其每个连接的连入地址和锚文本。
segments : 一存放抓取的页面,与上面链接深度 depth 相关, depth 设为 2 则在 segments 下生成两个以时间命名的子文件夹,比如 "20110718114601"。Segments是每轮抓取的时候根据crawldb生成的。存放的信息包括6种content、crawl_fetch、crawl_generate、crawl_parse、parse_da
indexs:存放每次下载的独立索引目录,这个可以由Crawldb,Linkdb和segments来合成:bin/nutch index crawl/indexs crawl/crawldb crawl/linkdb crawl/segments/*
index:由indexs合并而来的,存放的是索引信息。(nutch的索引中没有存储内容,内容存在segments中,所以直接用lucene读取nutch生成的索引会有问题。Lucene 中的segment和Nutch中的不同,Lucene中的segment是索引index的一部分,但是Nutch中的segment只是WebDB中 各个部分网页的内容和索引,最后通过其生成的index跟这些segment已经毫无关系了。)
因为挖掘用到的不是索引文件,而是文档的解析单词列表,所以我们关注nutch是怎么解析网页的。一般网络爬虫抓取网页时会解析网页内容并将内容下载到本地保存,若能解析网页,自然解析pdf文档也不会有问题,nutch对富文本的解析是以插件的形式,所以只需要配置文件中加上该选项便可。关键问题是,如何去提取这些已经解析出来的文本呢?由于segments下的所有文件都是二进制文件,不知道如何转成我们可视的文本字符,nutch提供了命令来导出抓取数据以便查看,如为了得到linkdb中的内容,我们可
使用bin/nutch readlinkdb crawl/linkdb/ -dump linkdb(导出的地址),然后就会看到linkdb文件夹下有个part-00000,然后就可以以文本方式打开。关键是我们想得到的是parse_data和parse_text,而segments数据的导出是一个整体,bin/nutch readseg -dump crawl/segments/20110718114601segdb
在readseg命令后,加可选参数命令,-nocontent,这样就不会导出content,-noparsedata,这样就不会导出parse_data,有这样的命令后,便可只导出parse_text,即经过解析的文本,如网页content,即包含里面的标签元素,而parse_text,则是去除网页格式的文本信息
参考资料:
1.http://wenku.baidu.com/view/c6fd2f4c2e3f5727a5e962ce.html
2.http://blog.csdn.net/forwen/article/details/4804733
3.http://blog.163.com/bit_runner/blog/static/53242218201141393943980/
4.http://www.cnblogs.com/kwklover/articles/445928.html