Beispiel #1
0
        internal override IEnumerable <SearchResult> SearchWord(string word, SearchIndexOperator op, SearchResultCollection subset)
        {
            //using (new DebugTimer($"Search word {word}, {op}, {subset?.Count}"))
            {
                foreach (var r in base.SearchWord(word, op, subset))
                {
                    yield return(r);
                }

                var baseScore = settings.baseScore;
                var options   = FindOptions.Words | FindOptions.Regex | FindOptions.Glob;
                if (op == SearchIndexOperator.Equal)
                {
                    options = FindOptions.Exact;
                }

                var documents = subset != null?subset.Select(r => GetDocument(r.index)) : GetDocuments(ignoreNulls: true);

                foreach (var r in FindProvider.SearchWord(false, word, options, documents))
                {
                    if (m_IndexByDocuments.TryGetValue(r.id, out var documentIndex))
                    {
                        yield return(new SearchResult(r.id, documentIndex, baseScore + r.score + 5));
                    }
                }
            }
        }
Beispiel #2
0
        internal override IEnumerable <SearchResult> SearchWord(string word, SearchIndexOperator op, SearchResultCollection subset)
        {
            var baseScore = settings.baseScore;
            var options   = FindOptions.Words | FindOptions.Regex | FindOptions.Glob /* | FindOptions.Fuzzy*/;

            if (op == SearchIndexOperator.Equal)
            {
                options = FindOptions.Exact;
            }
            var documents = subset != null?subset.Select(r => GetDocument(r.index)) : GetDocuments(ignoreNulls: true);

            return(base.SearchWord(word, op, subset)
                   .Concat(FindProvider.SearchWord(false, word, options, documents)
                           .Select(r => new SearchResult(r.id, m_IndexByDocuments[r.id], baseScore + r.score + 5))));
        }