Hi, I am going mad trying to find out what I am doing wrong with my custom filter implementation (almost an exact copy of SpecialsFilter from LIA). I have put together a quick sample to illustrate my problem, if some kind soul has 2 minutes to take a quick look and tell me where I am being so stupid, I would really appreciate it:
PROBLEM: Filtered query returns 1 result when it should return 10 TEST RIG: Add the documents to the index, every 10 documents having the same "advertiserId": int idToAdd = 100000; for(int i=0;i<100;i++) { if(i>0 && i%10==0) idToAdd++; Document doc = new Document(); doc.add(new Field("advertiserId", Integer.toString(idToAdd), Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.add(new Field("contents", "document number " + Integer.toString(i) + " random string", Field.Store.YES, Field.Index.TOKENIZED)); writer.addDocument(doc); } I have verified that the docs were created probably by browsing the index with Luke. String[] advertiserIds = {"100003"}; IFeaturedAdvertisersAccessor accessor = new FeaturedAdvertisersAccessor(advertiserIds); Filter filter = new FeaturedAdvertisersFilter(accessor); TermQuery tq = new TermQuery(new Term("contents", "document")); BooleanQuery bq = new BooleanQuery(); bq.add(tq, Occur.MUST); Hits hits = searcher.search(tq, filter); System.out.println("hits.length: " + hits.length()); result "hits.length: 1" Source for FeaturedAdvertisersFilter: public class FeaturedAdvertisersFilter extends Filter { private IFeaturedAdvertisersAccessor accessor; public FeaturedAdvertisersFilter(IFeaturedAdvertisersAccessor accessor) { this.accessor = accessor; } public BitSet bits(IndexReader reader) throws IOException { BitSet bits = new BitSet(reader.maxDoc()); String[] advertiserIds = accessor.advertiserIds(); int[] docs = new int[1]; int[] freqs = new int[1]; for (int i=0; i<advertiserIds.length; i++) { String advertiserId = advertiserIds[i]; if (advertiserId!=null) { TermDocs termDocs = reader.termDocs(new Term("advertiserId", advertiserId)); int count = termDocs.read(docs, freqs); if (count == 1) { bits.set(docs[0]); } } } return bits; } } Any help would be appreciated, Regards, Paul --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]