Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
     }
 }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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);
 }