private Facet CreateFacet(FacetDefinition definition) { var facet = new Facet(definition.UniqueName, definition.DisplayName, definition.Field); facet.Build(this.IndexReader); return facet; }
private List<FacetMatch> FindMatchesInQuery(Facet facet, Filter query, Filter filter, IndexReader indexReader) { var matches = facet.Values.Select(value => { var bitsQuery = new OpenBitSetDISI(query.GetDocIdSet(indexReader).Iterator(), indexReader.MaxDoc()); bitsQuery.And(value.Item2); if (filter != null) { //TODO: Remove this hard coded value (1000) var bitsFilter = new OpenBitSetDISI(filter.GetDocIdSet(indexReader).Iterator(), 1000); bitsQuery.And(bitsFilter); } var count = bitsQuery.Cardinality(); return new FacetMatch() { Count = count, Value = value.Item1, Id = facet.Id }; }).ToList(); return matches; }