抓取网站(Nutch)和索引结果(Solr)的单个抓取脚本

Single Crawl script to Crawl website (Nutch) and Index results (Solr)

我是 Nutch 和 Solr 的新手。我刚刚接管了活动,现在必须抓取和索引我的网站。

这些是我被要求遵循的步骤。

Solr-Admin-> Skyweb->Documents->Document Type (xml) and execute :

bin/crawl -i -D solr.server.url=http://IP:8080/solr/website/ urls/ crawl/ 5

我做了一些研究,觉得手动完成这些任务太累了,脚本应该处理所有上述任务。

所以我的 queries\concerns 是:

上面的脚本不是搞定了整个过程吗?我是否还需要手动删除爬网文件夹并清除现有索引?

管理任务的相关性是什么 - 'Reload' 和 'Optimize'?

我可以 cron 将抓取脚本安排到每周 运行 吗?它会处理整个过程吗?

我还能如何定期自动对 运行 进行抓取和索引?

放松!放轻松 !!你有没有研究过 Apache ManifoldCF 项目?它提供了一个干净的界面来抓取网页,比 Nutch 更好,以减少麻烦。它是开源的,您可以在几分钟内设置一个包含所有参数的作业,并在您选择的服务器中为您的数据编制索引,无论是 Solr、Elastic Search 等。而且,一旦您设置了作业,您就可以保存设置,这样您就不必间歇性地进行配置。它还支持 Rest API,这肯定允许您在运行中自动执行您的工作。 Google 它。你不会后悔的。希望有所帮助 :) .

有两种可能的方法:

  1. 配置Nutch在一周后重新抓取之前抓取的所有页面,见属性db.fetch.interval.default。保持 crawl/ 文件夹和 Solr 索引不变。 Nutch 会自动从 Solr 中删除消失的页面。 EV。您应该在每次抓取后删除旧段 (rm -rf crawl/segments/*),以避免磁盘随时间填满。

  2. 从头开始每次爬网(只需在调用 bin/crawl 之前删除文件夹 crawl/。也可以从命令行删除 Solr 索引,例如通过触发: curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8' curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'

组合这些命令并不难,并且将 bin/crawl 的调用包含在一个简短的 shell 脚本中,该脚本可以由 cronjob 调用。当然,根据自己的需要修改脚本也很容易bin/crawl