如何用nutch进行深度爬行

How to deep crawl with nutch

我目前正在抓取 28 个网站(小型、小型和大型),抓取生成了大约 25MB 的数据。我正在使用 Elasticsearch 编制索引并使用 edge_n-gram 策略进行自动完成。经过一些测试,我似乎需要更多数据来创建更好的多词(短语)建议。我知道我可以简单地抓取更多站点,但是有没有一种方法可以让 Nutch 完全抓取每个站点或尽可能多地创建更多数据以通过 edge_n_grams?

提供更好的搜索建议

这甚至是一个失败的原因吗?无论我有多少数据,通过记录用户搜索查询来创建更好的多词建议的最佳方法是什么?

您总是可以增加要抓取的链接数量,如果您使用 bin/crawl 命令,您可以只增加迭代次数或修改脚本并增加 sizeFetchlist参数(https://github.com/apache/nutch/blob/master/src/bin/crawl#L117)。此参数仅用作常规 bin/nutch 脚本中的 topN 参数。

请记住,此选项在 2.x 分支上也可用。

您想要完成什么样的建议?在我前段时间开发的一个应用程序中,我们结合使用了这两种方法(我们使用 Solr 而不是 elasticsearch,但本质是一样的)我们在单独的 collection/index 中为用户查询编制索引,并在其中配置了一个EdgeNGramFilterFactory(Solr 相当于 ES 的 edge_n_grams)这提供了一些基于用户已经搜索过的基本查询建议。当使用这种方法找不到建议时,我们会尝试根据已抓取内容的内容建议单个术语,这需要在前端进行一些 javascript 调整。

不确定在网页的整个文本内容上使用 edge_n_grams 是否有帮助,主要是因为将创建用于整个内容的 NGram,并且建议不会那么相关,因为伟大的匹配次数,但我不知道您的具体用例。

如果您打算抓取带有topN参数的命令,那么您可以使用http://big-analytics.blogspot.com.au/2016/05/building-apache-nutch-job-running.html

在最新的 Apache Nutch 中添加爬网代码并重建 nutch.job 文件。