В Lucene 2.4 (используется Solr 1.3), кэш поля внутренне поддерживает map (reader -> cache)
, что означает, что два разных считывателя будут иметь два разных экземпляра кэша.
Это работает, но когда читатель индекса является представлениемчерез другое устройство чтения индекса эти два экземпляра могут безопасно использовать один и тот же экземпляр fieldcache и сэкономить много памяти.Вот почему в Lucene 3.5 (используется Solr 3.5) IndexReader
теперь имеет метод для извлечения ключа кэша ( getCoreCacheKey ).По умолчанию возвращает this
, что приводит к тому же поведению, что и в Lucene 2.4, но некоторые реализации переопределяют этот метод для совместного использования экземпляров кэша полей с другими экземплярами IndexReader
.Например, безопасно разделить кэш между FilterIndexReader
и обернутым IndexReader
.Вот почему FilterIndexReader#getCoreCacheKey
возвращает ключ кэша обернутого IndexReader
.