我正在使用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崩溃...