如何使nutch索引只有特定文本的页面?

时间:2013-07-07 06:26:35

标签: nutch

我有2个要求。

首先,我希望Nutch只索引包含html中某些单词的页面。例如,我只想要nutch索引html中包含“wounderful”字的页面。 第二个是我希望nutch从网站索引某些URL。例如,我希望nutch索引类似于“mywebsite.com/XXXX/ABC/XXXX”或“mywebsite.com/grow.php/ABC/XXXX”的URL,其中“XXXX”可以是任何长度的任何单词。

这是我的seed.txt文件的内容

http://mysite.org/

这是我的regex-urlfilter.txt

的内容
+^http://mysite.org/work/.*?/text/

我评论了

#+.

我仍然低于错误

crawl started in: crawl
rootUrlDir = bin/urls
threads = 10
depth = 3
solrUrl=http://localhost:8983/solr/
topN = 5
Injector: starting at 2013-07-09 11:05:51
Injector: crawlDb: crawl/crawldb
Injector: urlDir: bin/urls
Injector: Converting injected urls to crawl db entries.
Injector: total number of urls rejected by filters: 1
Injector: total number of urls injected after normalization and filtering: 0
Injector: Merging injected urls into crawl db.
Injector: finished at 2013-07-09 11:06:08, elapsed: 00:00:17
Generator: starting at 2013-07-09 11:06:08
Generator: Selecting best-scoring urls due for fetch.
Generator: filtering: true
Generator: normalizing: true
Generator: topN: 5
Generator: jobtracker is 'local', generating exactly one partition.
Generator: 0 records selected for fetching, exiting ...
Stopping at depth=0 - no more URLs to fetch.
No URLs to fetch - check your seed list and URL filters.
crawl finished: crawl

3 个答案:

答案 0 :(得分:2)

Start here设置您想要的网址格式。然后look into plugins解析您的内容并决定应该将哪些内容编入索引。

答案 1 :(得分:0)

它显示Injector拒绝您的种子文件中的网址

Injector: total number of urls rejected by filters: 1

您的正则表达式无法正常工作,或者会有任何其他模式拒绝您的网址,例如-.*(/[^/]+)/[^/]+\1/[^/]+\1/-[?*!@=]

答案 2 :(得分:0)

知道这已经很老了,但只是想把我的两分钱加到与爬行与索引过滤器相关的主题上,对于nutch-1.13

regex-urlfilter测试

如果你想测试你的regex-urlfilter.txt表达式,你可以像这样使用插件测试

$ bin/nutch plugin urlfilter-regex org.apache.nutch.urlfilter.regex.RegexURLFilter 

这将不提供任何反馈,但是如果您输入网址并按Enter键,您会看到它的回显,带有“ - ”或“+”前缀,告诉您网址是否通过配置过滤器。

,例如

http://aaa.com
-http://aaa.com
http://bbb.com
+http://bbb.com

如果配置类似

+^http://bbb.com\.*
-.*

抓取过滤器与索引过滤器

这没有很好的记录,并花了一段时间才找到线索。 如果我们想要制作不同的过滤精度(广泛的爬行,但更详细的索引),我们可以做到以下几点。

首先,如果我们使用bin / crawl脚本,只需添加

  • 过滤命令末尾的-filter选项
  • 指定要使用的正则表达式文件的参数; -Durlfilter.regex.file)
像这样

<  __bin_nutch index $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT
>  __bin_nutch index $JAVA_PROPERTIES -Durlfilter.regex.file=regex-urlfilter-index.txt "$CRAWL_PATH"/crawldb -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT -filter

否则,只需将这两个参数附加到bin / nutch index命令,如果你在没有抓取脚本的情况下使用它们

现在,在'regex-urlfilter-index.txt'文件中输入所需的配置。

感谢grokbase中的Arthurs问题: http://grokbase.com/t/nutch/user/1579evs40h/filtering-at-index-time-with-a-different-regex-urlfilter-txt-from-crawl