Hi, Thanks for helps!

Yes, along the line you mentioned we can reduce the amount
of calculation, but we still need to loop through to count
all docs, so time may still be O(n), I am wondering if we
can avoid the loop to get count directly?

Best regards, Lisheng

-----Original Message-----
From: Michael McCandless [mailto:[EMAIL PROTECTED]
Sent: Thursday, May 24, 2007 7:38 AM
To: [email protected]
Subject: Re: How to avoid score calculation completely?



"Yonik Seeley" <[EMAIL PROTECTED]> wrote:
> On 5/24/07, Ramana Jelda <[EMAIL PROTECTED]> wrote:
> > But I also see importance of ignoring score calculation.
> >
> > If you put it aside performance gain, is there any possibility to completely
> > ignore scoring calculation?
> 
> Yes, for unsorted results use a hit collector and no sorting will be
> done by score (or anything else).
> 
> You can also ignore the score by simply sorting on other fields.

I *think* something close to this would allow you to count the number
of docs matching a query without scoring:

  Scorer s = query.weight(searcher).scorer(reader);
  int count = 0;
  while(s.next()) {
    count++;
  }

I'm not certain that avoids all scoring work but at least for some of
the scorers it should save some CPU time; I'm not sure how much.  Also
note that the TopDocCollector (used by default if you don't provide
your own collector) does not count docs that have score <= 0.0, so the
above code fragment would overcount in such cases.

Mike

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to