Hi Mark,
Thanks for clarifying this. So should I keep both sets of method implemented? I guess it won't hurt when solr trunk will use the updated version of lucene without those methods. What I don't get is that neither my createWeight or createQueryWeight methods seem to be called when I call rb.req.getSearcher().search(limitedQuery, myCollector); I'll look at the code to find out. Thanks! Jerome 2009/8/18 Mark Miller <markrmil...@gmail.com>: > You have run into some stuff that has been somewhat rolled back in Lucene. > > QueryWieght, and the methods it brought have been reverted. > > Shortly (when Solr trunk updates Lucene), Solr will go back to just > createWeight and weight. > > The main change that will be left is that Weight will be an abstract class > rather than an interface. > > > -- > - Mark > > http://www.lucidimagination.com > > Jérôme Etévé wrote: >> >> Hi all, >> >> I have a custom search component which uses a query I wrote. >> Basically, this Query (called DocSetQuery) is a Query decorator that >> skips any document which is not in a given document set. My code used >> to work perfectly in solr 1.3 but in solr 1.4, it seems that my >> DocSetQuery has lost all its power. >> >> I noticed that to be compliant with solr 1.4 trunk and the lucene it >> contains, I should implement two new methods: >> >> createQueryWeight >> and >> queryWeight >> >> So I did. It was very easy, because basically it's only about re-using >> the deprecated Weight createWeight and wrapping the result with a >> QueryWeightWrapper. >> >> So now I believe my DocSetQuery complies with the new >> solr1.4/lucene2.9-dev api. And I've got those methods: >> >> public QueryWeight queryWeight(Searcher searcher) throws IOException { >> return createQueryWeight(searcher); >> } >> public QueryWeight createQueryWeight(Searcher searcher) throws IOException >> { >> log.info("[sponsoring] creating QueryWeight calling createQueryWeight "); >> return new QueryWeightWrapper(createWeight(searcher)); >> } >> public Weight weight(Searcher searcher) throws IOException { >> return createWeight(searcher); >> } >> >> //and of course >> >> protected Weight createWeight(final Searcher searcher) throws IOException >> { >> log.info("[sponsoring] creating weight with DoCset " + docset.size()); >> ... >> } >> >> I'm then using my DocSetQuery in my custom SearchComponent like that: >> >> Query limitedQuery = new DocSetQuery(decoratedQuery , ... ); >> >> Then I simply perform a search by doing >> >> rb.req.getSearcher().search(limitedQuery, myCollector); >> >> My problem is neither of createQueryWeight or createWeight is called >> by the solr Searcher, and I'm wondering what I did wrong. >> Should I build the Weight myself and call the search method which >> accepts a Weight object? >> >> This is quite confusing because: >> - it used to work perfectly in solr 1.3 >> - in the nightly build version of lucene API, those new methods >> createQueryWeight and queryWeight have disappeared but with the lucene >> solr1.4trunk uses, they exists plus the old ones ( createWeight and >> weight) are deprecated. >> >> >> Thanks for your help. >> >> Jerome Eteve. >> > > > > > -- Jerome Eteve. Chat with me live at http://www.eteve.net jer...@eteve.net