You might be interested in this issue: http://issues.apache.org/jira/browse/LUCENE-1821
-- - Mark http://www.lucidimagination.com Jérôme Etévé wrote: > Hi all, > > I'm kind of struggling with a customized lucene.Scorer of mine, since > I use solr 1.4. > > Here's the problem: > > I wrote a DocSetQuery which inherit from a lucene.Query. This query > is a decorator for a lucene.Query that filters out the documents which > are not in a given set of predefined documents (a solr.DocSet which I > call docset ). > > So In my Weight / Scorer, I implemented the method nextDoc like that: > > public int nextDoc() throws IOException { > do { > if (decoScorer.nextDoc() == NO_MORE_DOCS) { > return NO_MORE_DOCS; > } > // DO THIS UNTIL the doc is in the docset > } while (!docset.exists(decoScorer.docID())); > return decoScorer.docID(); > } > > The decoScorer here is the decorated scorer. > > My problem here is that in docset, there are 'absolute' documents IDs, > but now solr uses a number of sub readers each with a kind of offset, > so decoScorer.docID() gives 'relative' document ID . Because of this, > I happen to test relative document IDs against a set of absolute > docIDs. > > So my DocSetQuery does not work anymore. The solution would be I think > to have a way of getting the offset of the SolrReader being used in > the context to be able to do docset.exists(decoScorer.docID() + > offset) . > > But how can I get this offset? > The scorer is built with a lucene.IndexReader in parameter: > public Scorer scorer(IndexReader reader) . > > Within solr, this IndexReader happens to be an instance of > SolrIndexReader so I though maybe I could downcast reader to a > SolrIndexReader to be able to call the offset related methods on it > (getBase() etc...). > > I feel quite unconfortable with this solution since my DocSetQuery > inherits from a lucene thing, so it would be quite odd to downcast > something to a solr class inside it, plus I didn't really figured out > how to use those offset related methods. > > Thanks for your help! > > All the best! > > Jerome Eteve. > >