On Wed, Apr 4, 2012 at 6:15 PM, Alan Bawden <a...@basistech.com> wrote:
> So I sat down to try to make a small test case that exhibited this
> behavior, and while I was working on that I thought of a possible
> explanation for what we are seeing.  If you agree that my explanation is
> what's going on here, then Benson and I can stop working on making a test
> case, and move on to figuring out how we can live with what may be
> unavoidable behavior.
>
> The key observation is that the differences in scores we see are always
> down around the sixth decimal place -- down where 32-bit floating point
> loses precision.  So what we're seeing seems likely to simply be the result
> of the fact that floating point addition isn't associative.
>
> In theory, the order of the documents in an index doesn't matter when
> computing a score, but if the documents are stored in a different order,
> any quantity that is computed using floating point by iterating over the
> set of documents may come out differently due to changes in the order in
> which the documents are processed.
>
> So could something like this cause what we are seeing?

OK this could make sense (floating point math is frustrating!).

But, Lucene generally scores one document at a time, so in theory just
changing its docid shouldn't alter the order of float operations.

Or... is it possible the query is different?  EG a BooleanQuery w/
SHOULD clauses in a different order?

Maybe try explain() in the two cases and compare?

Hmm, another idea: are you doing deletions in the test?  Or only adds?

Mike McCandless

http://blog.mikemccandless.com

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to