Получить количество ожидающих изменений на IndexWriter - PullRequest
0 голосов
/ 13 апреля 2011

У нас есть домашний поисковый сервис на основе Lucene.Некоторым конкретным вопросом, с которым я столкнулся некоторое время назад, было получение ожидающих изменений на IndexWriter.Если счетчик ожидающих изменений равен нулю, нет необходимости фиксировать индекс, открыть заново IndexReader, IndexSearcher и так далее.Также у нас есть некоторая логика уровня приложения, которая связана с вызовом IndexReader.commit(), и лучше не вызывать ее, если в точке фиксации нет реальных изменений.

У меня есть доступ ко всем местам, где методы IndexReader.updateDocument()и IndexReader.remove() вызваны, так что я просто могу написать свой счетчик ожидающих изменений.Но я заинтересован, может быть, он уже существует в самом API Lucene?Проверка API не дает мне достаточно информации по теме.

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Вы можете использовать IndexWriter.numRAMDocs для получения количества добавленных документов, но я думаю, что нет никакого открытого API для получения текущего количества буферизованных удалений.

IndexWriter.ramSizeInBytes также может быть полезно здесь. Он сообщает вам, сколько оперативной памяти используется в данный момент, поэтому он будет увеличиваться при добавлении или удалении документов (но уменьшается при очистке).

Обратите внимание, что IndexReader.isCurrent можно использовать только в том случае, если вы фиксируете изменения из IndexWriter, т.е. если у вас есть ожидающие изменения, но вы не зафиксировали (или не закрыли) средство записи, тогда IndexReader.isCurrent все равно вернет true.

1 голос
/ 13 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...