Я использую lucene для индексирования документов и выполнения поиска, после чего я немедленно удаляю их. все это можно рассматривать как несколько атомарное действие, которое включает в себя следующие шаги:
index (writer) → поиск (поисковик) → получить документы по счету (читатель) → удалить документы (читатель)
это действие может выполняться несколькими параллельными потоками в одном и том же индексе (с использованием FSDirectory
).
ВАЖНОЕ ПРИМЕЧАНИЕ: каждый поток обрабатывает отдельный набор документов, чтобы один поток не касался других документов потока
для этой цели у меня есть несколько вопросов:
1) следует ли использовать один экземпляр (для всех потоков) IndexWriter
, IndexReader
и IndexSearcher
? (они должны быть потокобезопасными)
2) может ли IndexWriter
манипулировать индексом, а IndexReader
удаляет документы? мне нужно закрыть одно для другого, чтобы сделать свое дело?
значение, может ли один поток записывать в индекс, а другой удаляется из него (как я упоминал ранее, я могу гарантировать, что они обрабатывают отдельные наборы данных)
3) любые другие рекомендации и рекомендации, которые могут возникнуть у вас, будут наиболее ценными.
Большое спасибо!