使用Lucene.NET时,索引超出了数组的范围

时间:2018-09-28 19:22:59

标签: c# lucene lucene.net

我正在使用Lucene.net版本3库对数据建立索引并对其进行搜索,但是由于某些原因,有时它会在内部引发奇怪的错误消息,我什至不知道为什么会这样。下面是我尝试搜索索引时的代码:

using (var analyzer = new StandardAnalyzer(Version.LUCENE_30))
{
    using (var reader = IndexReader.Open(directory, true))
    {
        using (var searcher = new IndexSearcher(reader))
        {
            term = QueryParser.Escape(term);
            var parsedQuery =
                new MultiFieldQueryParser(Version.LUCENE_30, includedFields, analyzer)
                    .Parse(term);

            var result = searcher.Search(parsedQuery, reader.MaxDoc); //Here happens the error

            totalCount = result.TotalHits;

            var matches = result.ScoreDocs.OrderByDescending(x => x.Score).ToPaginated(page, size);

            foreach (var match in matches)
            {
                int docId = match.Doc;

                var document = searcher.Doc(docId);

                var item = //...

                list.Add(item);
            }
        }
    }
}

此错误消息并不总是会发生,它仅在将某些随机文本字符串设置为搜索词时才会发生,因此有时效果很好,有时会崩溃。

我想逃避这个名词,但仍然没有运气。有人知道我在这里可能做错了什么吗?

这是错误消息:

  在d:\ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ TermScorer.cs:Lucene.Net.Search.DisjunctionSumScorer.AdvanceAfterCurrent()中的lucene.Net.Search.TermScorer.Score()中

)在d:\ Lucene.Net \ FullRepo \ trunk \ src中的d:\ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ DisjunctionSumScorer.cs:第187行\ core \ Search \ DisjunctionSumScorer.cs:第155行,位于d:\ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ BooleanScorer2.cs:第397行,位于Lucene.Net.Search.BooleanScorer2.NextDoc()。 d中的Net.Search.BooleanScorer.NextDoc():\ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ BooleanScorer.cs:d中Lucene.Net.Search.BooleanScorer.Score(收藏家)的第369行: \ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ BooleanScorer.cs:Lucene.Net.Search.IndexSearcher.Search的第389行(d,\ Lucene.Net \ FullRepo中的重量,过滤器,收集器) \ trunk \ src \ core \ Search \ IndexSearcher.cs:Lucene.Net.Search.IndexSearcher.Search的221行(重量,过滤器f ilter,Int32 nDocs)in d:\ Lucene.Net \ FullRepo \ trunk \ src \ core \ Search \ IndexSearcher.cs:Blog.Services.SearchService的第188行。 \ Blog.Services \ SearchService.cs:第98行,位于

这是一个随机字符串,导致崩溃: 212我认为首先要使用ef db的webapp我要尝试使用lazy 。该字符串没有任何含义,但对我来说仍然很奇怪,为什么它会使Lucene崩溃...

0 个答案:

没有答案