internal virtual IReadOnlyList <Document> GetDocuments() { var list = new List <Document>(); if (SearchStrings.All(IsInvalidSearchString)) { return(list); } using var luceneDirectory = FSDirectory.Open(LuceneIndexPath); using var luceneDirectoryReader = DirectoryReader.Open(luceneDirectory); var searcher = new IndexSearcher(luceneDirectoryReader); foreach (var searchString in SearchStrings) { if (IsInvalidSearchString(searchString)) { continue; } var preparedSearchTerm = PrepareSearchTerm(searchString); var query = ParserUtilities.ParseQuery(preparedSearchTerm, queryParser); var hits = searcher.Search(query, Filter, ResultsLimit).ScoreDocs; list.AddRange(hits.Select(hit => searcher.Doc(hit.Doc))); } return(list); }
private TEnum GetEnumFromKeyword(string keyword) { var strictString = SearchStrings.FirstOrDefault(StrictSearchPredicate(keyword)); return(strictString.Value.IsNotNull() ? strictString.Key : SearchStrings.First(SearchPredicate(keyword)).Key); }
public void Add() { if (!string.IsNullOrEmpty(SearchString)) { SearchStrings.Add(SearchString); SearchString = string.Empty; } }
private string GetQuery() { var builder = new StringBuilder(); SearchDates.ForEach(d => builder.Append($"{d.Key.Value}:{d.Value:MM/dd/yyyy} ")); SearchStrings.ForEach(s => builder.Append($"{s.Key.Value}:{s.Value} ")); return(builder.ToString()); }
protected override void PopulateFilterSettings(FilterSettingsBuilder <Challenge> filterSettingsBuilder, string keyword) { var preparedKeyword = keyword.ToLower(); if (SearchStrings.Any(SearchPredicate(preparedKeyword))) { var value = GetEnumFromKeyword(preparedKeyword); filterSettingsBuilder.AddFilterRule(PropertyExpression, FilterOperator.IsEqualTo, value); } else { throw new NoResultsException(); } }
void RefilterList() { var filtredParam = String.Join(", ", SearchStrings.Select(x => String.Format("<{0}>", x))); logger.Info("Фильтрация таблицы по {0}...", filtredParam); DateTime searchStarted = DateTime.Now; var newList = itemsList.AsParallel().Where(SearchFilterFunc).ToList(); filtredItemsList = newList; var delay = DateTime.Now.Subtract(searchStarted); logger.Debug("Поиск нашел {0} элементов за {1} секунд.", newList.Count, delay.TotalSeconds); logger.Info("Ок"); Gtk.Application.Invoke(delegate { OnItemsListUpdated(); }); }
public void Remove(object item) { SearchStrings.Remove(item as string); }