使用 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"
url
是 JEXL 上下文中可用的默认原语。您可以在 https://github.com/apache/nutch/blob/master/conf/nutch-default.xml#L1755-L1771 上找到更多相关信息
如果 "index" 你真的只想抓取与你的正则表达式匹配的 URL s(如果不匹配则不会被获取或解析)那么你可以使用相同的regex-urlfilter.txt
定义所需的格式。请记住,使用这种方法您需要 运行 再次抓取。
我想用 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"
url
是 JEXL 上下文中可用的默认原语。您可以在 https://github.com/apache/nutch/blob/master/conf/nutch-default.xml#L1755-L1771 上找到更多相关信息
如果 "index" 你真的只想抓取与你的正则表达式匹配的 URL s(如果不匹配则不会被获取或解析)那么你可以使用相同的regex-urlfilter.txt
定义所需的格式。请记住,使用这种方法您需要 运行 再次抓取。