吕克让的资料库 - lhelper's repository

克己服人,礼智谦让!
Weblcome to lhelper's repository!

Thursday, November 03, 2005

 

crawl-urlfilter.txt vs. regex-urlfilter.txt in nutch

crawl-urlfilter.txt 之于 regex-urlfilter.txt
注:写这些内容的时候,作者运行的是nutch 的0.7 release;如果你运行的是nutch 的其他版本,那么你可能需要自己去分析二者的区别:*)
首先有一种说法是:crawl-urlfilter.txt 是供intranet 抓取用的,而regex-urlfilter.txt 是供internet 抓取用的——因为两者抓取的重点不同,从而导致过滤规则不同。如果你只是想知道两者的简单区别的话,那么看到这里也就可以了,但是如果你想知道更多细节那么下面的内容还是值得一看的:)
crawl-urlfilter.txt 和 regex-urlfilter.txt 都是用来保存过滤url 的正则表达式的。类 RegexURLFilter(org.apache.nutch.net.RegexURLFilter) 通过 NutchConf.get().get("urlfilter.regex.file") 来从中(当然如果你装载了其他配置文件的话,也可能有其他的候选者)进行选择。
regex-urlfilter.txt 是 urlfilter.regex.file 属性的缺省值(1),定义在 $NUTCH_JAVA_HOME/conf/nutch-default.xml(如果你设置了环境变量NUTCH_CONF_DIR 的话,那就是 $NUTCH_CONF_DIR/nutch-default.xml)中。该值可以被后续加载的配置文件所覆盖,例如如果你装载了类 CrawlTool(org.apache.nutch.tool.CrawlTool),那么缺省值就会被 crawl-tool.xml 中的urlfilter.regex.file 属性覆盖(2)。也就是说,如果你在操作过程中调用了类CrawlTool,那么类RegexURLFilter 将会采用crawl-tool.xml 中指定的文件,否则就用缺省的文件。
当然如果nutch-site.xml 中也定义了urlfilter.regex.file 属性的话,那么 NutchConf.get().get("urlfilter.regex.file") 返回的值就以nutch-site.xml 所指定的值为准。(关于nutch 的resource chain)
注:(1)NutchConf 初始化时会装载nutch-default.xml 和nutch-site.xml
public class NutchConf {
......
public NutchConf() {
resourceNames.add("nutch-default.xml");
resourceNames.add("nutch-site.xml");
}
......
}
(2)装载类CrawlTool 时,crawl-tool.xml 会被插入到resource chain 中
public class CrawlTool {
......
static {
NutchConf.get().addConfResource("crawl-tool.xml");
}
......
}
参见:
What's the difference between crawl-urlfilter.txt and regex-urlfilter.txt?

 

hack URLFilters so as to test RegexURLFilter

只是简单给URLFilters(org.apache.nutch.net.URLFilters)加了一个 main(String[]) 方法 :*)
public static void main(String args[]) throws IOException, MalformedPatternException, Exception {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String line;
while((line=in.readLine())!=null) {
String out=URLFilters.filter(line);
if(out!=null) {
System.out.print("+");
System.out.println(out);
} else {
System.out.print("-");
System.out.println(line);
}
}
}

这样测试url filter rule 就方便多了:)
$ ./bin/nutch org.apache.nutch.net.URLFilters
......
http://www.lhelper.org/blog/
using fitler 0:org.apache.nutch.net.RegexURLFilter
+http://www.lhelper.org/blog/
http://www.lhelper.org/blog/?q=lhelper
using fitler 0:org.apache.nutch.net.RegexURLFilter
-http://www.lhelper.org/blog/?q=lhelper

 

fix bugs of nutch's demo webapp

修正nutch (0.7 release) 的demo 中的几个小bug。


Archives

June 2004   November 2005   July 2006   August 2006  

This page is powered by Blogger. Isn't yours?