Exemple #1
0
        public IEnumerable <SearchResult> Find(IEnumerable <string> searchStrings)
        {
            var foundDocs = new List <SearchResult>();

            foreach (var document in MongoDBConnector.GetAll <TextDocument>("text_documents"))
            {
                var matches = searchStrings
                              .Select(searchString => Regex.Matches(
                                          document.Text,
                                          searchString.StartsWith("\"")
                            ? searchString.Replace("\"", string.Empty)
                            : searchString,
                                          RegexOptions.Compiled))
                              .ToList();

                if (matches.All(match => match.Count > 0))
                {
                    foundDocs.Add(new SearchResult
                    {
                        Match         = document,
                        Occurrences   = matches.Sum(match => match.Count),
                        SearchedWords = String.Join(" • ", searchStrings)
                    });
                }
            }

            return(foundDocs.Any() ? foundDocs : null);
        }