Lucene 分组统计方案——只能适合于小数据量,性能耗用太大

本文介绍了如何修改Lucene.Net的TopDocCollector来实现分组统计,并且指出这种方法仅适用于小数据量,因为性能消耗较大。通过修改Collect方法和构造函数,实现了根据Document类别进行统计的功能。
摘要由CSDN通过智能技术生成

    转: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值