Nutch爬取与Solr搜索结合

不知道为什么在Nutch-1.3中没了Nutch自带的搜索war文件,而且在Nutch-1.3中,抓取文件后,生成的目录只有crawldb,linkdb,segments,而没有了indexs和index目录

查了一下官网Wiki,上面是把Nutch的索引映射到solr,用solr来提供搜索功能,详见官网Wiki说明:http://wiki.apache.org/nutch/RunningNutchAndSolr

我百思不得其解,我觉得Nutch-1.2中自带的搜索功能挺好用的啊,搜索界面和百度、Google差不多,根据关键字查出来后,结果展示也和百度、Google类似,而且结果中关键字还加了高亮显示,也有分页,而solr的搜索界面并不友好,返回结果也不友好,是以XML形式返回的

对比这两个,搜索同一关键字,发现Nutch搜索的展示结果有重复,而solr没有重复,还有solr可以在conf/schema.xml配置字段属性,nutch好像改了这个配置文件,也没起效果,比如,我想让索引中存储content和termvector,可是搜索结果,并没有存储

用nutch solrindex命令,将Nutch索引映射到Solr后,映射过去的是content还是parse_text呢?看了一下源码org.apache.nutch.indexer.solr.SolrIndexer,发现映射过去的是parse_text

而nutch中的content是带html标签的文本,所以nutch搜索的结果是以网页形式显示的,所以对应的内容是content,而solr搜索的content是映射过去的parse_text

如果希望索引能被mahout lucene.vector 转成向量,则需要存储termVector属性,不管是lucene还是solr中加了TermVector后,索引目录中,都会多出.tvd,.tvf,.tvx三个文件,如果命令参数中有--norm 2,意思就是欧几里德向量空间,后面在计算距离时就按欧几里德空间度量距离,当然这个参数可以设置其它的,那就是其它的向量空间模型,详见官网说明

如果直接将索引转成mahout向量的话,它的key就变成的整型数字,将索引转为向量后的文件key-value是(LongWritable,VectorWritalbe),即没有对应的原始url,就不知道结果如何对应的原始文件

如果是采用先mahout seqdirectory,然后再mahout seq2saprse的话,在向量文件中用seqdumper读取时可以看到key是文件名,但此时value对应的不是数字啊,在用vectordump读取时,参数加-p就可以显示出key及value数组,不过这样在由最后结果的value从输入向量中反查url,是不是很麻烦呢?最好的方法是将key也输出到最终结果中去

估计solr搜索功能比Nutch的搜索强大吧,所以在Nutch-1.3中弃用了。上面只是一点小对比,至于具体的原因,我还没搞清楚,等有时间,再好好对比一下

 

2011-10-27 补充说明:

为什么会出现nutch+solr的组合:http://apps.hi.baidu.com/share/detail/33659525 ,这篇文章有介绍,在Hadoop的contrib中的index是使用MapReduce建立Lucene索引的,不是用来搜索用的。将索引放在HDFS上面是为了利用Hadoop平台的计算性能对索引进行合并等一些操作。在hadoop平台上进行这些操作比单机处理强很多。参考:http://lucene.472066.n3.nabble.com/Lucene-index-file-on-HDFS-td932203.html

nutch不适合作分布式搜索,因为在hdfs上面的索引可能不在同一节点,搜索可能需要请求n个节点才能完成。这样,对在hdfs上面完成搜索较本地索引文件在本地的搜索性能会略逊一些。参考资料:http://blog.csdn.net/telnetor/article/details/6143365

solr的优点:http://baike.baidu.com/view/943234.htm
1.solr的缓存比nutch内置的前台的效率高,solr是企业级全文搜索,丰富的查询语言,提功更多搜索功能,例如:拼写检查等

2.solr可配置、可扩展并对查询性能进行了优化,高效、灵活的缓存功能,垂直搜索功能,提供基于Web的管理界面等

 

 

 

 

你可能感兴趣的:(mapreduce,hadoop,Google,Lucene,Solr,存储)