При использовании Lucene.Net с ASP.NET я могу представить, что один веб-запрос может инициировать обновление индекса, а другой веб-запрос выполняет поиск. У Lucene.Net встроена возможность управлять параллельным доступом или мне нужно управлять им, чтобы избежать ошибок «быть использованным другим процессом»?Does Lucene.Net управляет несколькими потоками, обращаясь к одному и тому же индексу, одна индексирует, а другая ищет?
EDIT: После чтения документов и экспериментов, это то, что я думаю, что узнал: Есть две проблемы: безопасность потоков и параллелизм. Многопоточность «безопасна» в том, что вы не можете сделать ничего плохого для индекса. Но это безопасно ценой только одного объекта, имеющего блокировку индекса за один раз. Второй объект придет и выдаст исключение. Таким образом, вы не можете оставить поиск открытым и ожидать, что писатель в другом потоке сможет обновить индекс. И если поток занят обновлением индекса, то попытка создания поисковика завершится неудачно.
Кроме того, Искатели видят индекс так, как он был в то время, когда они его открывают, поэтому, если вы их сохраните и обновите индекс, они не будут видеть обновления.
Я хотел, чтобы мои искатели увидели последние обновления.
Мой дизайн и, кажется, работает до сих пор, заключается в том, что мои авторы и искатели разделяют блокировку, так что они не терпят неудачу - они просто ждут - до тех пор, пока не будет выполнена текущая запись или поиск.
Не могли бы вы объяснить, как вы реализовали блокировки? Используете ли вы блокировки чтения и записи или только одну общую блокировку? – 2010-02-15 11:24:18
Один общий замок. Я написал, что я сделал: http://ifdefined.com/blog/post/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx – 2010-02-15 14:08:43
То, что вы говорите в своем вопросе, неверно: «Итак, вы можете не оставляйте поиск открытым и ожидайте, что писатель в другом потоке сможет обновить индекс. И если поток занят обновлением индекса, тогда попытка создания поисковика завершится неудачей ». Как упоминалось в других ответах: «Редактор индекса или читатель могут редактировать файлы индекса lucene во время поиска» и наоборот. – 2013-10-20 01:10:21