我試圖分析Solr 3.5.0中的FieldCacheImpl,任何人都可以解釋我或指示我知道抽象類緩存在前期執行什麼操作?緩存在FieldcacheImpl中的功能
感謝和問候,
Jeyaprakash。
我試圖分析Solr 3.5.0中的FieldCacheImpl,任何人都可以解釋我或指示我知道抽象類緩存在前期執行什麼操作?緩存在FieldcacheImpl中的功能
感謝和問候,
Jeyaprakash。
正如你在FieldCache.java
中看到的,有幾種不同的方法來加載fieldcache(getBytes,getInts,getStringIndex,getStrings,...)。這就是爲什麼FieldCacheImpl
保持map (type -> cache)
。
Lucene段是一次寫入,然後是隻讀的,因此您只想加載字段緩存一次,然後始終重新使用同一個實例。 Cache是幫助實現這一點的幫助類:它是圍繞map (segment -> map (field -> fieldcache instance))
的包裝。 (通過fieldcache例如,我的意思是爲getBytes
方法byte[]
,一個String[]
爲getStrings
方法,...)
當段不再使用(如果沒有更加開放讀者使用它) ,您希望GC能夠回收fieldcache,這就是該地圖爲WeakHashMap的原因。
有不同的Cache
實現,因爲加載(例如)一個字符串緩存和一個StringIndex緩存(請參閱Cache#createValue(AtomicReader, Entry, boolean)
)時,邏輯不相同。
非常感謝Adrien。 – jeyaprakash 2012-03-05 10:34:40
嗨Adrien,我可以理解你上面提到的,因爲我現有的版本是Solr 1.3.0,我打算遷移到Solr 3.5,所以如果你能區分兩個版本中的Cache類,將會有很大的幫助? – jeyaprakash 2012-03-05 12:30:15
嗨Adrien,我可以理解你上面提到的,因爲我現有的版本是Solr 1.3.0,我打算遷移到Solr 3.5,所以如果你能在兩個版本中區分Cache類,將會有很大的幫助? – jeyaprakash 2012-03-05 12:40:10