如何使用Apache Nutch和Solr抓取磁链接,以便它们在Solr查询结果中可用?

时间:2017-10-05 23:43:38

标签: solr web-crawler nutch magnet-uri

我自己熟悉Apache Nutch和Solr的爬行,但意识到虽然HTTP和HTTPS链接在Solr查询结果中可用content字段磁链接不是。我将conf/regex-urlfilter.txt调整为

-^(file|ftp|mailto):

# skip image and other suffixes we can't yet parse
# for a more extensive coverage use the urlfilter-suffix plugin
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$

# skip URLs containing certain characters as probable queries, etc.
#-[?*!@=]

# skip URLs with slash-delimited segment that repeats 3+ times, to break loops
-.*(/[^/]+)/[^/]+\1/[^/]+\1/

# for linuxtracker.org
+^https?://*linuxtracker.org/(.+)*$
#+^magnet:\?xt=(.+)*$
    # causes magnet links to be ignored/not appear in content field
+^magnet:*$

# reject anything else
-.

并且不明白为什么磁链接不应该包含在content中。正如您所看到的,我正在使用http://linuxtracker.org进行调查,例如有磁铁链接磁铁:?xt = urn:btih:http://linuxtracker.org/?page=torrent-details&id=24c76d5e7f3a758f0798e9b5895cc2e9ac9797cf上的ETDW2XT7HJ2Y6B4Y5G2YSXGC5GWJPF6P。

在使用bin/crawl进行抓取之后,在pysolr中按照以下方式查询Solr时会出现磁链接:

solr = pysolr.Solr(solr_core_url, timeout=10)
results = solr.search('*:*')
for result in results:
    print(result)

我在Ubuntu 17.04上使用Apache Nutch发行版1.13-73-g9446b1e1和Solr 6.6.1。

1 个答案:

答案 0 :(得分:1)

短回答磁力链接不是“正常”链接,并且Nutch不支持开箱即用。

答案很长:

您提交的配置会在提取链接后应用,在这种情况下,如果您使用parse-html解析插件尝试评估possible outlink is a valid link这是否基本上只创建了一个java.net.URL

另一方面,

java.net.URL根据javadocs不支持开箱即用的磁力链接:

  

以下协议的协议处理程序保证存在于搜索路径中:

 http, https, ftp, file, and jar

如果您正在使用parse-tika something similar is happening

  

一个选项可能是让您的自定义解析器为您处理此问题,请记住,在任何情况下,您都不希望跟随(具有外链)磁链,因为Nutch无法处理这些链接。

如果您只想在Solr / ES(用于搜索)中编制索引,那么您可以编写自己的HtmlParseFilter并在分隔的字段中添加这些链接。