使用Solr和Nutch仅索引特定域

时间:2018-11-22 11:44:36

标签: solr web-crawler nutch

我想使用Nutch抓取一个网站,并使用Solr对它进行索引。

我有一个具有以下结构的网站:

主页:example.com

我要索引的文档:subdomain.example.com/{some_number}.html

要“发现”所有这些文档,我从example.com/discover开始,该文档列出了我想要的许多文档。

所以我现在拥有的是:

在我的regex-urlfilter.txt中,我只抓取了example.com中的文档,因此效果很好

我用Solr编制索引,并且一切正常。我使用以下命令:

./$nutch/bin/crawl -i -s $nutch/urls/ $nutch/ 5

我现在想要的是仅索引以下格式的文档:subdomain.example.com/{some_number}.html,而忽略其他所有内容(即,我不想索引example.com/discover

我想这是通过更改Solr中的某些配置来完成的,因为它是索引的一部分。

1 个答案:

答案 0 :(得分:2)

在这种情况下,可以在Nutch侧进行配置。在将文档发送到Solr之前对其进行过滤。

如果只想“索引”(意味着要提取和解析所有链接,但仅将与正则表达式匹配的链接存储在Solr上),则可以使用index-jexl-filter。使用此插件,您可以编写一个小的JEXL script来检查文档的URL是否与您的正则表达式匹配,如果匹配则将其发送给Solr。

该脚本可能类似于(在nutch-site.xml文件上配置):

url =~ "^https?:\/\/[a-z]+\.example.com\/(\d+).html"

如果通过“索引”来表示您只想抓取与正则表达式匹配的URL(如果不匹配,则不会提取也不分析),则可以使用相同的regex-urlfilter.txt来定义所需的URL格式。请记住,使用这种方法,您将需要再次运行爬网。