【发布时间】:2015-10-29 15:20:05
【问题描述】:
我是 Nutch 和 Solr 的新手,所以我可能只是配置不正确,但我在任何 conf 文件中都找不到此设置。
我正在一个相对较小的站点上测试 Nutch,它会爬取站点根目录中的任何页面,但不会爬取子目录中的任何页面。因此,当我查看 Solr (5.3.1) 中的核心并进行搜索时,我可以找到一个页面 www.somesite.com/somepage.php,但没有一个带有像 www.somesite.com/somedir/somepage.php 这样的 url 的页面。
我正在使用以下命令运行爬取脚本:
sudo -E bin/crawl -i -D solr.server.url=http://localhost:8983/solr/TestCrawlCore urls/ TestCrawl/ 5
这应该会进行 5 次迭代,但它只运行一次并报告没有更多 URL 可获取并退出。控制台或 hadoop 日志中没有错误。
结果:
Injecting seed URLs
/opt/apache-nutch-1.10/bin/nutch inject TestCrawl//crawldb urls/
Injector: starting at 2015-10-29 09:51:55
Injector: crawlDb: TestCrawl/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Injector: Total number of urls rejected by filters: 0
Injector: Total number of urls after normalization: 1
Injector: Merging injected urls into crawl db.
Injector: overwrite: false
Injector: update: false
Injector: URLs merged: 1
Injector: Total new urls injected: 0
Injector: finished at 2015-10-29 09:51:58, elapsed: 00:00:02
Thu Oct 29 09:51:58 CDT 2015 : Iteration 1 of 5
Generating a new segment
/opt/apache-nutch-1.10/bin/nutch generate -D mapred.reduce.tasks=2 -D mapred.child.java.opts=-Xmx1000m -D mapred.reduce.tasks.speculative.execution=false -D mapred.map.tasks.speculative.execution=false -D mapred.compress.map.output=true TestCrawl//crawldb TestCrawl//segments -topN 50000 -numFetchers 1 -noFilter
Generator: starting at 2015-10-29 09:51:58
Generator: Selecting best-scoring urls due for fetch.
Generator: filtering: false
Generator: normalizing: true
Generator: topN: 50000
Generator: 0 records selected for fetching, exiting ...
Generate returned 1 (no new segments created)
Escaping loop: no more URLs to fetch now
种子.txt
http://www.somesite.com
(我也尝试添加尾随“/”,但这并没有改变任何东西。)
我在 regex-urlfilter.txt 中尝试了以下所有方法,但似乎没有一个与其他方法有任何不同。不过,我对这些过滤器了解甚少。
+^http://([a-z0-9\]*\.)*www.somesite.com/
+^http://([a-z0-9\-A-Z]*\.)*www.somesite.com/
+^http://([a-z0-9\-A-Z]*\.)*www.somesite.com/([a-z0-9\-A-Z]*\/)*
+^http://([a-z0-9\]*\.)*www.somesite.com/([a-z0-9\]*\/)*
我已经广泛浏览了 hadoop 日志,只是为了确保它们在之前的运行中没有被爬取,我认为这可能是 solr 中的索引问题,但看起来它们只是从未被爬取过并且是被忽略了。
有人可以在这里为我指出正确的方向来解决这个问题吗?我没有想法和谷歌。
【问题讨论】: