使用 Solr 和 Nutch 仅索引特定域

Indexing only specific domains with Solr and Nutch

我想用 Nutch 抓取一个网站并用 Solr 索引它。

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

首页:example.com

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

为了 "discover" 所有这些文件,我从 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 中的一些配置来完成的,因为它是索引部分。

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

如果你只想 "index"(意思是你想获取和解析所有链接,但只在 Solr 上存储与正则表达式匹配的链接)你可以使用 index-jexl-filter. With this plugin, you can write a small JEXL script 来检查是否文档的 URL 与您的正则表达式匹配,如果匹配,它将被发送到 Solr。

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

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

如果 "index" 你真的只想抓取与你的正则表达式匹配的 URL s(如果不匹配则不会被获取或解析)那么你可以使用相同的regex-urlfilter.txt 定义所需的格式。请记住,使用这种方法您需要 运行 再次抓取。