Сбой с Lucene.NET при использовании сортировки

У меня есть поле даты, вставленное в базу данных 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 не работает нарушение прав доступа< /а>


person Thomas    schedule 27.06.2015    source источник
comment
Это действительно странно: я решил скомпилировать Lucene.Net из исходного кода, и он мгновенно вылетает при выполнении вызова поиска. Поэтому я решил посмотреть поближе: imgur.com/MFmAwzC. Указатель на объект (R10) указывает на недопустимый адрес. Но если я выполняю тот же код с другим параметром сортировки (одним из перечислений), адрес правильный. Отладчик показывает правильный объект...   -  person Thomas    schedule 28.06.2015
comment
Становится всё страннее: 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
comment
Я должен был сделать видео об этом! imgur.com/NGyFRdS   -  person Thomas    schedule 28.06.2015
comment
Это первое случайное исключение, которое означает, что может быть попытка/поймать, которая его обрабатывает, и это не проблема. Отключите перехват исключений первого шанса и посмотрите, что действительно всплывает из вашего кода.   -  person sisve    schedule 28.06.2015
comment
Я помещаю всю информацию в запись JIRA (я помещаю всю информацию в запись JIRA (Issues.apache.org/jira/browse/LUCENENET-554) Это проще, чем обсуждать одну и ту же проблему в двух местах :)   -  person Thomas    schedule 28.06.2015