Ответ 1
IndexWriter
, IndexReader
и IndexSearcher
являются потокобезопасными в соответствии с api javadoc:
ПРИМЕЧАНИЕ: экземпляры IndexSearcher полностью потокобезопасны, что означает несколько потоков могут вызвать любой из своих методов, одновременно
ПРИМЕЧАНИЕ: экземпляры IndexReader полностью потокобезопасны, что означает несколько потоки могут одновременно вызвать любой из своих методов.
ПРИМЕЧАНИЕ: экземпляры IndexWriter полностью потокобезопасны, что означает несколько потоков могут вызвать любой из своих методов, одновременно
Можно открыть только несколько файлов с открытым текстом IndexReader
, но лучше использовать один (по соображениям производительности).
Можно открыть только один IndexWriter
(и он создаст блокировку записи, чтобы другие не открывались в том же индексе). Вы можете использовать IndexReader
для удаления документов, тогда как IndexWriter
удерживает эту блокировку. IndexReader
всегда будет видеть индекс, как это было в то время, когда он был открыт, изменения, сделанные автором, будут видны только после того, как писатель зафиксирует их, что читатель снова открыт.
Любое число IndexSearcher
может быть открыто, но снова лучше поделиться им. Они могут использоваться даже при изменении индекса. Работает так же, как и для IndexReader
(изменения не отображаются до тех пор, пока поисковик не будет открыт).