public IList<SearchFilter> GetFilter(IList<Filter> searchFilters) { var reader = IndexReader.Open(_directory, true); var filters = new List<SearchFilter>(); foreach (var searchFilter in searchFilters) { var items = new List<SearchFilterItem>(); var filter = new SearchFilter { FilterName = searchFilter.FieldName, Items = items }; filters.Add(filter); var query = CreateQuery(searchFilters, searchFilter.FieldName); SimpleFacetedSearch search = new SimpleFacetedSearch(reader, searchFilter.FieldName); var facets = search.Search(query); foreach (var facet in facets.HitsPerFacet) { var hitCount = facet.HitCount; if (hitCount == 0) continue; string value = string.Empty; foreach (var document in facet.Documents) { value = document.Get(searchFilter.FieldName); if (!string.IsNullOrWhiteSpace(value)) break; } if (string.IsNullOrEmpty(value)) continue; var isQueried = searchFilter.Values.Any(s => string.Equals(s, value, StringComparison.InvariantCultureIgnoreCase)); var item = new SearchFilterItem { Label = value, Value = value, Hits = (int) facet.HitCount, IsQueried = isQueried }; filter.Items.Add(item); } items.Sort((s1, s2) => string.Compare(s1.Value, s2.Value, StringComparison.Ordinal)); } return filters; }
public IList <SearchFilter> GetFilter(IList <Filter> searchFilters) { var reader = IndexReader.Open(_directory, true); var filters = new List <SearchFilter>(); foreach (var searchFilter in searchFilters) { var items = new List <SearchFilterItem>(); var filter = new SearchFilter { FilterName = searchFilter.FieldName, Items = items }; filters.Add(filter); var query = CreateQuery(searchFilters, searchFilter.FieldName); SimpleFacetedSearch search = new SimpleFacetedSearch(reader, searchFilter.FieldName); var facets = search.Search(query); foreach (var facet in facets.HitsPerFacet) { var hitCount = facet.HitCount; if (hitCount == 0) { continue; } string value = string.Empty; foreach (var document in facet.Documents) { value = document.Get(searchFilter.FieldName); if (!string.IsNullOrWhiteSpace(value)) { break; } } if (string.IsNullOrEmpty(value)) { continue; } var isQueried = searchFilter.Values.Any(s => string.Equals(s, value, StringComparison.InvariantCultureIgnoreCase)); var item = new SearchFilterItem { Label = value, Value = value, Hits = (int)facet.HitCount, IsQueried = isQueried }; filter.Items.Add(item); } items.Sort((s1, s2) => string.Compare(s1.Value, s2.Value, StringComparison.Ordinal)); } return(filters); }