You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@lucene.apache.org by Chris Hostetter <ho...@fucit.org> on 2011/05/03 00:27:08 UTC

Re: Result order when no sort defined

: I'm doing a query where it pulls back a collection of results based upon a
: list of id values.  eg:
	....
: This query returns the results in a consistent order, but I can't discern
: how it works out that order.
: 
: About half of the results all come back with a score of 0.5912891 and then
: some others have a lower 0.55549824 and the last one has 0.53078187.
: 
: id is a string field and each of these should be an exact match.

the specifics of you you executed the search (ie: what API you used and 
what your code looks like) are important.   At the lowest level, docs come 
back in "index order" by default -- that historicly has been the order 
they were put into the index, but as Lucene evolves and new merge 
algorithms are added it may not always been true.

based on what you're describing however, it's possible you are using a 
TopDocs based API which returns them sorted by score.

The real question is why the docs don't all have identical scores ... the 
score explanation feature should help you understand that.  the details 
really depend on wether there are any docs with the same id value (even if 
they are deleted) and how the id value is indexed. (and if there are doc 
boosts, etc...)

: I'm trying to get them returned in the order that the ids are defined in the
: query.  eg.  +(id:a or id:b or id:c) returns a list of [a,b,c]

i don't know of any simple way to do that with lucene scoring.  if these 
are "unique keys" and you know in advance the upper bound number of docs 
you'll get back (ie: the number of ids) and you want them all at once (ie: 
no pagination) then it's pretty trivial to sort them in the client.


-Hoss