public IEnumerable <LogEntry> Filter(string queryString, ViewFilter view, int count, Direction direction, ulong?referenceId, out int totalCount)
            {
                var context = new IncermentalSearchContext(count, direction, referenceId);

                var parser = new CustomQueryParser(LuceneNet.Util.Version.LUCENE_30, MessageFieldName, analyzer);
                var sortBy = new Sort(new SortField(IdFieldName, SortField.LONG, direction == Direction.Backward));

                while (true)
                {
                    var combinedQueryString = Searcher.CombineQuery(queryString, view, context.Range);
                    if (combinedQueryString.Length == 0)
                    {
                        totalCount = 0;
                        return(new LogEntry[0]);
                    }

                    var query = parser.Parse(combinedQueryString);

                    lock (searcherLock)
                    {
                        var searchResults = searcher.Search(query, null, count, sortBy);

                        totalCount = searchResults.TotalHits;
                        var result = searchResults.ScoreDocs.Take(count).Select(d => searcher.Doc(d.Doc)).Select(x => converter.ToLogEntry(x));

                        context.UpdateResult(result);
                        if (context.IsFinished)
                        {
                            return((direction == Direction.Backward) ? context.Result.Reverse() : context.Result);
                        }

                        context.UpdateRange();
                    }
                }
            }
Exemplo n.º 2
0
            public IEnumerable<LogEntry> Filter(string queryString, ViewFilter view, int count, Direction direction, ulong? referenceId, out int totalCount)
            {
                var context = new IncermentalSearchContext(count, direction, referenceId);

                var parser = new CustomQueryParser(LuceneNet.Util.Version.LUCENE_30, MessageFieldName, analyzer);
                var sortBy = new Sort(new SortField(IdFieldName, SortField.LONG, direction == Direction.Backward));
                while(true)
                {
                    var combinedQueryString = Searcher.CombineQuery(queryString, view, context.Range);
                    if(combinedQueryString.Length == 0)
                    {
                        totalCount = 0;
                        return new LogEntry[0];
                    }

                    var query = parser.Parse(combinedQueryString);

                    lock(searcherLock)
                    {
                        var searchResults = searcher.Search(query, null, count, sortBy);

                        totalCount = searchResults.TotalHits;
                        var result = searchResults.ScoreDocs.Take(count).Select(d => searcher.Doc(d.Doc)).Select(x => converter.ToLogEntry(x)); 

                        context.UpdateResult(result);
                        if(context.IsFinished)
                        {
                            return (direction == Direction.Backward) ? context.Result.Reverse() : context.Result;
                        }

                        context.UpdateRange();
                    }
                }
            }