转:http://tech.ddvip.com/2009-01/1231742812105589.html
注意:本文内容仅适用于Lucene.Net,以2.1版为例,其它版本可能会有出入,Java版本差别更大一些。
改动库先要有个思路。Lucene.Net的查询结果是一个Hits,而它有一个方法length可以得到总的结果。这个结果是一个精确值。这个值实际上是在TopDocCollector类的Collect方法计算出来的。要改精算为估算也就是在这里添加算法就可以了。
修改一下其实也适合于 java版本的lucene,我就是用下面这个方法实现的:
public void Collect(int doc,float score)
{
if(score>0.0f)
{
totalHits++;
if(hq.Size()<numHits||score>=minScore)
{
hq.Insert(new ScoreDoc(doc,score));
minScore=((ScoreDoc)hq.Top()).score;//maintainminScore
}
}
}
这个方法中已经有了Document的id号,只要有办法拿到Document就能得到类别了。能拿到Document的类,Index