Encontré un excelente ejemplo de cómo agarrar los recuentos de facetas en una consulta base. Almacena el bitarray de la consulta base para mejorar el rendimiento cada vez que se cuenta una faceta.Lucene.NET 2.9 y BitArray/DocIdSet
var genreQuery = new TermQuery(new Term("genre", genre));
var genreQueryFilter = new QueryFilter(genreQuery);
BitArray genreBitArray = genreQueryFilter.Bits(searcher.GetIndexReader());
Console.WriteLine("There are " + GetCardinality(genreBitArray) + " document with the genre " + genre);
// Next perform a regular search and get its BitArray result
Query searchQuery = MultiFieldQueryParser.Parse(term, new[] {"title", "description"}, new[] {BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD}, new StandardAnalyzer());
var searchQueryFilter = new QueryFilter(searchQuery);
BitArray searchBitArray = searchQueryFilter.Bits(searcher.GetIndexReader());
Console.WriteLine("There are " + GetCardinality(searchBitArray) + " document containing the term " + term);
El único problema es que estoy usando una versión más reciente de Lucene.NET (2.9) y Filter.Bits es obsoleto. Se nos dice que usemos DocIdSet en su lugar (en lugar de BitArray).
No puedo encontrar la forma de hacer bitArray.Y (bitArray) con un docIdSet. Miré en el reflector y encontré OpenIdSet, que tiene operaciones Y. No estoy seguro si OpenIdSet es la ruta a seguir, solo estoy diciendo.
¡Gracias de antemano!
gracias por compartir la respuesta, me ha ahorrado muchas horas de investigación – Woland