Да, я хочу использовать FieldCache вне поиска в CustomScoreQuery

ствуй
У меня есть индекс lucene, который часто обновляется новыми записями, у меня есть 5 000 000 записей в моем индексе, и я кэширую одно из своих числовых полей, используя FieldCache. но после обновления индекса потребуется время, чтобы перезагрузить FieldCache снова (я перезагружаю кэш, поскольку документация говорит, что DocID ненадежен), так как я могу минимизировать эти издержки, добавляя только новые добавленные DocID в FieldCache, потому что эта возможность превращается в узкое место в моем применение.


IndexReader reader = IndexReader.Open(diskDir);
int[] dateArr = FieldCache_Fields.DEFAULT.GetInts(reader, "newsdate"); // This line takes 4 seconds to load the array
dateArr = FieldCache_Fields.DEFAULT.GetInts(reader, "newsdate"); // this line takes 0 second as we expected
// HERE we add some document to index and we need to reload the index to reflect changes

reader = reader.Reopen();
dateArr = FieldCache_Fields.DEFAULT.GetInts(reader, "newsdate"); // This takes 4 second again to load the array

Я хочу механизм, который минимизирует это время, добавляя только новые документы в индекс в нашем массиве, есть такая техникаhttp://invertedindex.blogspot.com/2009/04/lucene-dociduid-mapping-and-payload.html для повышения производительности, но он по-прежнему загружает все документы, которые у нас уже есть, и я думаю, что нет необходимости перезагружать их все, если мы найдем способ только добавить новые документы в массив

Ответы на вопрос(2)

Ваш ответ на вопрос