I had to do something similar, but I plan on re-writing it into something
more elegant. I hope this helps give you some ideas.
1. Create a QueryFilter on only those items that matched the criteria (have
a required clause in your boolean query)
2. Create a BitFilter which takes a BitSet from step 1 and flip the bits
3. Perform a search with each Filter and display results for each search
Here is my BitFilter code:
--------------------------------------------------
package org.apache.lucene.search;
import java.io.IOException;
import java.util.BitSet;
import org.apache.lucene.index.IndexReader;
public class BitFilter extends Filter {
private BitSet bitSet;
public BitFilter(BitSet bs) {
bitSet = bs;
}
public void flipAll() {
bitSet.flip(0, bitSet.size()-1);
}
/* (non-Javadoc)
* @see org.apache.lucene.search.Filter#bits(
org.apache.lucene.index.IndexReader)
*/
public BitSet bits(IndexReader reader) throws IOException {
return bitSet;
}
}
--------------------------------------------------------------------------------
On 8/31/05, raymondcreel (sent by Nabble.com <http://Nabble.com>) <
[EMAIL PROTECTED]> wrote:
>
>
> Actually in this case I am sorting by score already but I'm not sure if
> that helps. Regardless of how I do my primary sort, I want to tweak the
> results such that some hardcoded number of documents that match some
> criteria get pushed or frontloaded to the top of the results. For instance
> think of a search engine where you generally are displaying a list of pages
> sorted by score, but you want 10 pages from a featured site to always show
> at the top of the first page, while leaving the rest of the sort order as it
> is. That's why it's not something I can really do at the index stage by
> assigning boosts - I only want to boost those first 10 items that match the
> criteria, not all of them.
>
> What I'm doing now is taking the whole resulting document collection,
> iterating through it and manually moving these 10 documents to the front of
> the collection. This is slow and ugly. I was hoping there might be a slicker
> way to do it as part of the actual sort. I will play around with the custom
> sorting and report back if I figure out an elegant way to do it.
>
> Thanks for all your replies.
> Raymond
> --
> Sent from the Lucene - Java Users forum at Nabble.com <http://Nabble.com>:
> http://www.nabble.com/custom-sort-t262833.html#a750675
>
>