Имам поле за дата, вмъкнато в база данни Lucene със следния код:
Document.Add(new NumericField("TimeStamp", Field.Store.YES, true).SetLongValue(Data.TimeStamp.ToBinary()));
И имам следното запитване:
var Sort = new Sort(new SortField("TimeStamp", SortField.LONG, true));
var ParsedQuery = ParseQuery(_Parser, SearchQuery);
var Filter = new QueryWrapperFilter(ParsedQuery);
var Hits = _Searcher.Search(ParsedQuery, Filter, Skip + Limit, Sort);
Но се срива при изпълнение на метода за търсене със следното:
A first chance exception of type 'Lucene.Net.QueryParsers.QueryParser.LookaheadSuccess' occurred in Lucene.Net.dll
A first chance exception of type 'System.IO.IOException' occurred in Lucene.Net.dll
A first chance exception of type 'System.IO.IOException' occurred in Lucene.Net.dll
A first chance exception of type 'System.AccessViolationException' occurred in HDIndexing.dll
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Ако заменя променливата Sort с една от константите, като Sort.RELEVANCE, тогава търсенето работи правилно.
Проблемът идва от персонализираното ми търсене.
Между другото забелязах нещо друго странно и не знам дали това е връзка: Ако проверя моята Lucene DB с инструмента Luke, всички мои полета се съобщават като низове:
https://i.stack.imgur.com/SnlSD.png
Не знам дали това е грешка в Luke или нещо не е наред с настройката на Lucene от моя страна. Опитах се да променя сортирането на тип "низ", за да видя какво ще се случи, но се срива по същия начин, така че и в двата случая типът на полето не изглежда да оказва влияние.
Някой имал ли е този проблем преди?
Може да е подобно на публикация на някой друг: lucene.net сортиране не работи нарушение на достъпа
var Hits = _Searcher.Search(ParsedQuery, null, Skip + Limit, Sort.RELEVANCE); var SortSetting = Sort.RELEVANCE; var Hits0 = _Searcher.Search(ParsedQuery, null, Skip + Limit, SortSetting);
Първият работи, вторият се срива... Може ли да е грешка в компилатора? - person Thomas   schedule 28.06.2015