我正在使用Lucene.net 2.4作为客户端网站的大量编程使用查询:布尔查询,模糊查询,不同权重,前缀等....
有时,非常随机,我有以下错误:
算术运算导致Lucene.Net.Util.PriorityQueue.Initialize(Int32 maxSize)溢出 at Lucene.Net.Search.FuzzyQuery.ScoreTermQueue..ctor(Int32 size) 在Lucene.Net.Search.FuzzyQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) 在Lucene.Net.Search.IndexSearcher.Rewrite(查询原文) 在Lucene.Net.Search.Query.Weight(Searcher搜索者) 在Lucene.Net.Search.Searcher.CreateWeight(查询查询) 在Lucene.Net.Search.Searcher.Search(查询查询,过滤器过滤器,Int32 n)
然后似乎Lucene被阻止了,因为我必须重新启动网站才能再次进行lucene搜索。
遗憾的是,该网站不适用于非用户,因此我无法为您提供网址。
但如果有人以前见过这个问题,我会很感激有一些指导来解决它。
更新:我记得我之前在另一个文件夹中重新生成了完整索引并手动交换它而不重新启动站点的应用程序池。它可能来自那个吗?
干杯 和Fabrice
答案 0 :(得分:2)
如果您使用BooleanQuery.SetMaxClauseCount(int),请确保它至少比Int32.MaxValue少1个。
FuzzyQuery.Rewrite()创建一个SizeQueue,其大小为BooleanQuery.GetMaxClauseCount()+ 1,这会导致溢出异常。