У меня есть поле даты, вставленное в базу данных 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 с помощью инструмента Luke, все мои поля будут отображаться как строки:
https://i.stack.imgur.com/SnlSD.png
Я не знаю, ошибка ли это в Люке или что-то не так с настройкой Lucene на моем конце. Я попытался изменить сортировку на тип «строка», чтобы посмотреть, что произойдет, но он падает так же, так что в любом случае тип поля, похоже, не влияет.
Кто-нибудь уже сталкивался с такой проблемой?
Это может быть похоже на чье-то сообщение: lucene.net sort не работает нарушение прав доступа< /а>
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