2012-03-05 4 views
1

Solr 3.5.0에서 FieldCacheImpl을 분석하려고했는데, 나에게 설명해 주거나 추상 클래스 캐시가 무엇을 수행하고 있는지 알 수있는 포인터를 제공 할 수 있습니까?FieldcacheImpl에서 캐시의 기능

감사 및 감사합니다,

Jeyaprakash.

답변

1

FieldCache.java에서 볼 수 있듯이 fieldcache (getBytes, getInts, getStringIndex, getStrings ...)를로드하는 여러 가지 방법이 있습니다. 따라서 FieldCacheImplmap (type -> cache)을 유지합니다.

Lucene 세그먼트는 한 번만 쓰고 나서 읽기 전용이므로 필드 캐시를 한 번만로드 한 다음 항상 동일한 인스턴스를 다시 사용하려고합니다. Cache는 이것을 달성하는 데 도움이되는 도우미 클래스입니다. map (segment -> map (field -> fieldcache instance))의 래퍼입니다.

세그먼트가 더 이상 사용되지
  • (그것을 사용 더 개방 리더가없는 경우) (fieldcache 인스턴스, I합니다 ... getBytes 방법이 byte[] 상기 getStrings 방법이 String[] 의미) GC가 fieldcache를 회수 할 수있게하려면이지도가 WeakHashMap 인 이유입니다.

  • 문자열 캐시와 StringIndex 캐시 (예 : Cache#createValue(AtomicReader, Entry, boolean) 참조)를로드 할 때 논리가 동일하지 않기 때문에 Cache 구현이 다릅니다.

+0

감사합니다. Adrien. – jeyaprakash

+0

안녕하세요 Adrien, 기존 버전이 Solr 1.3.0이고 Solr 3.5로 마이그레이션 할 계획이므로 위에 언급 한 내용을 이해할 수 있습니다. 두 버전 모두에서 Cache 클래스를 구별 할 수 있다면 큰 도움이 될 것입니다. ? – jeyaprakash

+0

안녕하세요, Adrien, 기존 버전이 Solr 1.3.0이고 Solr 3.5로 마이그레이션 할 계획이므로 위에서 언급 한 내용을 이해할 수 있습니다. 두 버전 모두에서 Cache 클래스를 구별 할 수 있다면 큰 도움이 될 것입니다. ? – jeyaprakash

관련 문제