Аритметичната операция доведе до препълване с Lucene.Net 2.4

Използвам Lucene.net 2.4 за уебсайт на клиент с интензивно програмно използване на заявки: булеви заявки, размити заявки, различно тегло, префикс и т.н.

Понякога, много произволно, получавам следната грешка:

Аритметичната операция доведе до препълване в Lucene.Net.Util.PriorityQueue.Initialize(Int32 maxSize) в Lucene.Net.Search.FuzzyQuery.ScoreTermQueue..ctor(Int32 size) в Lucene.Net.Search.FuzzyQuery.Rewrite(IndexReader reader ) в Lucene.Net.Search.BooleanQuery.Rewrite(четец на IndexReader) в Lucene.Net.Search.BooleanQuery.Rewrite(четец на IndexReader) в Lucene.Net.Search.BooleanQuery.Rewrite(четец на IndexReader) в Lucene.Net.Search. BooleanQuery.Rewrite(IndexReader reader) в Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) в Lucene.Net.Search.IndexSearcher.Rewrite(Query original) в Lucene.Net.Search.Query.Weight(Searcher searcher) в Lucene.Net.Search.Searcher.CreateWeight(Заявка за заявка) в Lucene.Net.Search.Searcher.Search(Заявка за заявка, филтър за филтриране, Int32 n)

И тогава изглежда, че Lucene е блокиран, защото трябва да рестартирам уебсайта, за да накарам lucene търсенето да работи отново.

За съжаление уебсайтът не е достъпен за непотребители, така че не мога да ви дам URL.

Но ако някой някога е виждал този проблем преди, ще съм благодарен да има някои насоки за разрешаването му.

АКТУАЛИЗАЦИЯ: Спомням си, че малко преди това генерирах отново пълния индекс в друга папка и го размених ръчно, без да рестартирам набора от приложения на сайта. Може да идва от това не?

Наздраве Фабрис


person fabrice    schedule 22.02.2010    source източник


Отговори (1)


Ако използвате BooleanQuery.SetMaxClauseCount(int) уверете се, че е поне 1 по-малко от Int32.MaxValue.

FuzzyQuery.Rewrite() създава PriorityQueue с размер BooleanQuery.GetMaxClauseCount() +1, което причинява изключението за препълване.

person Jf Beaulac    schedule 10.06.2010