准备工作:
用Nutch的crawler先爬好数据,假设数据存放的文件夹为crawl,要设置cong/nutch-site.xml下的searcher.dir的value为该文件夹,然后运行NutchBean,注意要加query参数。
过程之一:
进行一些列的初始化后,nutch调用了import org.apache.lucene.search.Searcher类
在其public TopDocs optimize(BooleanQuery original,
Searcher searcher, int numHits,
String sortField, boolean reverse)
throws IOException {
函数中,建立了BooleanQuery
在没有设置searcherMaxHits和timerThread的情况下,会直接调用searcher.search(query, filter, numHits),再调用search(createWeight(query), filter, n)进入Lucene的searcher包中。
如果设置参数限制,情况也类似。
过程之二:
简述Lucene的searcher的评分过程如下:
1、创建Query,将之传给Searcher
2、Searcher通过Query创建Weight
3、Weight创建Scorer
4、Searcher创建collector并将之传给Scorer
5、scorer根据match程度,计算出score
6、将score写到collector中
这里都用基类来代替,事实上,lucene的执行是这些类的子类的多态实现。
protected Weight createWeight(Query query) throws IOException {
return query.weight(this);
}//通过此函数实现步骤2
未完待续。。。
阅读(402) | 评论(0) | 转发(0) |