I can try, for now I just decided to use Lucene's TermsFilter which does the job perfectly. If I have some spare time I'll put together a unit test to show the problem.
Thanks. On Wed, Mar 18, 2009 at 12:23 PM, Grant Ingersoll <gsing...@apache.org>wrote: > Can you isolate this down to just a simple unit test? > > > On Mar 17, 2009, at 6:52 PM, Comron Sattari wrote: > > I've recently upgraded to Solr 1.3 using Lucene 2.4. One of the reasons I >> upgraded was because of the nicer SearchComponent architecture that let me >> add a needed feature to the default request handler. Simply put, I needed >> to >> filter a query based on some additional parameters. So I subclassed >> QueryComponent and replaced the line >> >> rb.setQuery( parser.getQuery() ); >> >> with one that wrapped the parsed query in a FilteredQuery >> >> Query query = parser.getQuery(); >> String arguments = params.get("param-name"); >> if( arguments != null) { >> query = new FilteredQuery(query, new MyCustomFilter(arguments)); >> } >> rb.setQuery(query); >> >> The filter class I used can be seen here: >> http://privatepaste.com/021ZH27tKG. >> And is nearly verbatim from the Lucene in Action book, when describing a >> way >> to do security filtering. >> >> This seems to work fine, although I'm getting some strange behavior when >> exercising this code through some unit tests from my Rails app. Sometimes >> I >> get an NPE when doing the filtering. >> >> at top level in at >> >> org.apache.lucene.index.MultiSegmentReader$MultiTermDocs.doc(MultiSegmentReader.java >> at line 533 >> at <MyQueryComponent>$MyCustomFilter.bits(Unknown Source) >> at top level in at >> org.apache.lucene.search.Filter.getDocIdSet(Filter.java >> at line 49 >> at top level in at >> org.apache.lucene.search.FilteredQuery$1.scorer(FilteredQuery.java at line >> 105 >> at top level in at >> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java at line >> 132 >> at top level in at org.apache.lucene.search.Searcher.search(Searcher.java >> at line 126 >> >> After some detective work I decided the problem had to do with an empty >> index, and the termDocs iterator has 0 elements to iterate over and was >> throwing this error. Since there is no size() method or analogous method >> on >> the TermDocs iterator, I decided to use docFreq(term) as you can see in >> the >> source code. But this didn't solve my problem either. This error is being >> throw even when docFreq(term) returns more then 0 documents. I can't for >> the >> life of me figure out why this iterator's doc() method throwing an NPE. >> (Well I can deduce that the current member is null, but I don't know why.) >> Is the index corrupted? I can see record in the index that should match my >> Term through the solr /admin/ interface, and docFreq(term) returns a >> number >> >>> 0. Yet this NPE keeps showing up. >>> >> >> Any help or guidance would be appreciated. If you need to see more source >> I'd be happy to provide it, but I'm sure thats all the relevant stuff. >> >> (I cross posted this to both Solr and Lucene lists.) >> >> Comron >> > >