Sorting is done however you specify, by field, with secondary fields specified, by document id, by score/relevance, or even by a custom implementation to sort by something else (in Lucene in Action we provide an implementation that sorts by two-dimensional distance from a given location, where documents have a "location").

So, sorting should be exactly what you want. You want to sort by a particular field:

        Hits hits = searcher.search(query, new Sort("popularity", true));

Does that do what you want? (the 'true' is to reverse the sort, so that you get descending popularity, which is probably what you want). In this example, the score would have no bearing whatsoever on the order of the Hits, only the "popularity" field in descending order, and document id when the popularity of documents are the same.

Where are you getting that sorting is only done on 100 matches by default? We should correct the documentation if it says something like that.

        Erik


On Sep 22, 2004, at 6:59 AM, [EMAIL PROTECTED] wrote:

Thanks for the reply,
I've looked in to the search method that takes a Sort object as argument.
As I understand it the sorting is only done on the best matches (100 by
default)? I don't want the default score to have any impact at all. I want
to sort all hits on popularity not just the best matches.


/William

Actually what William should use is the new Sort facility to order
results by a field.  Doing this with a Similarity would be much
trickier.  Look at the IndexSearcher.sort() methods which take a Sort
and follow the Javadocs from there.  Let us know if you have any
questions on sorting.

It would be best if you represent your 'popularity' field as an integer
(or at least numeric) since sorting by String uses more memory.


        Erik


On Sep 22, 2004, at 4:52 AM, Otis Gospodnetic wrote:

You need your own Similarity implementation and you need to set it as
shown in this javadoc:
http://jakarta.apache.org/lucene/docs/api/org/apache/lucene/search/
Similarity.html

Otis

--- "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:

Hi,
I know this is probably a common question and I've found a couple of
posts
about it in the archive but none with a complete answer. If there is
one
please point me to it!

The question is that I want to discard the default scoring and
implement my
own. I want all the the hits to be sorted after popularity (a field)
and
not by anything else. How can I do this? What classes and methods do
I have
to change?

thanks,
William


-------------------------------------------------------------------- -
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]


---------------------------------------------------------------------
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]


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



Reply via email to