org.apache.lucene.search
public class: CachingWrapperFilter [javadoc |
source]
java.lang.Object
org.apache.lucene.search.Filter
org.apache.lucene.search.CachingWrapperFilter
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
QueryFilter
Wraps another filter's result and caches it. The purpose is to allow
filters to simply filter, and then wrap with this class to add caching.
| Field Summary |
|---|
| protected Filter | filter | |
| protected transient Map | cache | A transient Filter cache. To cache Filters even when using RemoteSearchable use
RemoteCachingWrapperFilter instead. |
| Method from org.apache.lucene.search.CachingWrapperFilter Detail: |
public BitSet bits(IndexReader reader) throws IOException {
if (cache == null) {
cache = new WeakHashMap();
}
Object cached = null;
synchronized (cache) { // check cache
cached = cache.get(reader);
}
if (cached != null) {
if (cached instanceof BitSet) {
return (BitSet) cached;
} else if (cached instanceof DocIdBitSet)
return ((DocIdBitSet) cached).getBitSet();
// It would be nice to handle the DocIdSet case, but that's not really possible
}
final BitSet bits = filter.bits(reader);
synchronized (cache) { // update cache
cache.put(reader, bits);
}
return bits;
} Deprecated! Use - #getDocIdSet(IndexReader) instead.
|
public boolean equals(Object o) {
if (!(o instanceof CachingWrapperFilter)) return false;
return this.filter.equals(((CachingWrapperFilter)o).filter);
}
|
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
if (cache == null) {
cache = new WeakHashMap();
}
Object cached = null;
synchronized (cache) { // check cache
cached = cache.get(reader);
}
if (cached != null) {
if (cached instanceof DocIdSet)
return (DocIdSet) cached;
else
return new DocIdBitSet((BitSet) cached);
}
final DocIdSet docIdSet = filter.getDocIdSet(reader);
synchronized (cache) { // update cache
cache.put(reader, docIdSet);
}
return docIdSet;
}
|
public int hashCode() {
return filter.hashCode() ^ 0x1117BF25;
}
|
public String toString() {
return "CachingWrapperFilter("+filter+")";
}
|