On Feb 8, 2007, at 12:36 PM, Kainth, Sachin wrote:

Chris has given an example of how to perform categorisation of lucene searches:

String[] mfgs = ...;
  String query = "+category:cameras +price:[0 to 10]";
  Query q = QueryParser.parse(query);
  Hits results = searcher.search(q, mySort)
  BitSet all = (new QueryFilter(q)).bits(reader)
  int[] mfg_counts = new int[mfgs.length];
  for i in (0 to mfgs.length) {
BitSet these = (new QueryFilter(new TermQuery("mfg",mfgs [i]))).bits(reader);
     these.and(all)
     mfg_counts[i] = these.cardinality();
  }

What I don't understand though is what this line does:

BitSet all = (new QueryFilter(q)).bits(reader)

Anyone have any ideas?

"all" is a BitSet lit up for the documents that matched "query". "these" (the BitSet for a particular category) is .anded with "all" to get the counts _left over_ for each category given "query".

Make sense?

        Erik


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to