It works.
For those using Lucene.NET here is an example of a Filter that takes a list
of IDs for books:
public class BookFilter: Filter
{
private readonly List<int> bookIDs;
public BookFilter(List<int> bookIDsToSearch)
{
bookIDs = bookIDsToSearch;
}
public override BitArray Bits(IndexReader reader)
{
BitArray bits = new BitArray(50000);
int[] docs = new int[1];
int[] freqs = new int[1];
foreach (int bookID in bookIDs)
{
TermDocs termDocs = reader.TermDocs(new Term("id",
bookID.ToString()));
int count = termDocs.Read(docs, freqs);
if(count==1)
bits.Set(docs[0],true);
}
return bits;
}
}