Lucene.NET - получение поврежденных индексов при отключениях сервера - PullRequest
0 голосов
/ 15 августа 2011

Так что я очень доволен реализацией Lucene.NET на текущем сайте, кроме случайного повреждения индекса.Я не получу никаких ошибок, но начну замечать, что результаты возвращаются дважды, тройно и т. Д. Если я использую Luke , я увижу странность с индексом, множество документов появляется несколько раз.Итак, я думаю, что, возможно, не вызывается финализатор / Dispose, и поэтому это портит индексы?

У кого-нибудь есть опыт, предотвращающий это?Я знаю, что если я вручную удаляю индексные файлы с диска, все возвращается на круги своя.Должен ли я пытаться сделать это при каждом перезапуске службы?

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

В итоге было решено использовать перегрузку конструктора indexwriter , которая позволяет указать, что индексы должны быть воссозданы.Это удаляет старые индексные файлы. Этот ТАК вопрос помог направить меня в правильном направлении.

0 голосов
/ 15 августа 2011

Хм, это не похоже на повреждение индекса, но похоже, что вы вводите дубликаты документов в свой индекс.

Как документы помещаются в ваш индекс? Есть ли поле, которое используется в качестве первичного ключа? Как вы проверяете этот ключ при добавлении документов? Вы добавляете все свои документы за один проход и никогда не обновляете их? Или вы проверяете наличие обновлений и обновляете позже.

Возможно, наиболее интересным с точки зрения тестирования, получается ли у вас явно непротиворечивый набор дубликатов после закрытия службы? Это действительно не будет указывать на повреждение индекса, не так ли?

Удачи,

...