Lucene++ - a full-featured, c++ search engine
API Documentation


FieldCacheImpl.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6 
7 #ifndef FIELDCACHEIMPL_H
8 #define FIELDCACHEIMPL_H
9 
10 #include "FieldCache.h"
11 
12 namespace Lucene {
13 
15 class FieldCacheImpl : public FieldCache, public LuceneObject {
16 public:
18  virtual ~FieldCacheImpl();
19 
21 
22 protected:
23  MapStringCache caches;
25 
26 public:
27  virtual void initialize();
28  virtual void purgeAllCaches();
29  virtual void purge(const IndexReaderPtr& r);
31 
32  virtual Collection<uint8_t> getBytes(const IndexReaderPtr& reader, const String& field);
33  virtual Collection<uint8_t> getBytes(const IndexReaderPtr& reader, const String& field, const ByteParserPtr& parser);
34 
35  virtual Collection<int32_t> getInts(const IndexReaderPtr& reader, const String& field);
36  virtual Collection<int32_t> getInts(const IndexReaderPtr& reader, const String& field, const IntParserPtr& parser);
37 
38  virtual Collection<int64_t> getLongs(const IndexReaderPtr& reader, const String& field);
39  virtual Collection<int64_t> getLongs(const IndexReaderPtr& reader, const String& field, const LongParserPtr& parser);
40 
41  virtual Collection<double> getDoubles(const IndexReaderPtr& reader, const String& field);
42  virtual Collection<double> getDoubles(const IndexReaderPtr& reader, const String& field, const DoubleParserPtr& parser);
43 
44  virtual Collection<String> getStrings(const IndexReaderPtr& reader, const String& field);
45  virtual StringIndexPtr getStringIndex(const IndexReaderPtr& reader, const String& field);
46 
47  virtual void setInfoStream(const InfoStreamPtr& stream);
48  virtual InfoStreamPtr getInfoStream();
49 };
50 
51 class Entry : public LuceneObject {
52 public:
54  Entry(const String& field, const boost::any& custom);
55  virtual ~Entry();
56 
58 
59 public:
60  String field; // which Fieldable
61  boost::any custom; // which custom comparator or parser
62 
63 public:
65  virtual bool equals(const LuceneObjectPtr& other);
66 
68  virtual int32_t hashCode();
69 };
70 
72 class Cache : public LuceneObject {
73 public:
74  Cache(const FieldCachePtr& wrapper = FieldCachePtr());
75  virtual ~Cache();
76 
78 
79 public:
81  WeakMapLuceneObjectMapEntryAny readerCache;
82 
83 protected:
84  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key) = 0;
85 
86 public:
88  virtual void purge(const IndexReaderPtr& r);
89 
90  virtual boost::any get(const IndexReaderPtr& reader, const EntryPtr& key);
91  virtual void printNewInsanity(const InfoStreamPtr& infoStream, const boost::any& value);
92 };
93 
94 class ByteCache : public Cache {
95 public:
96  ByteCache(const FieldCachePtr& wrapper = FieldCachePtr());
97  virtual ~ByteCache();
98 
100 
101 protected:
102  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
103 };
104 
105 class IntCache : public Cache {
106 public:
107  IntCache(const FieldCachePtr& wrapper = FieldCachePtr());
108  virtual ~IntCache();
109 
111 
112 protected:
113  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
114 };
115 
116 class LongCache : public Cache {
117 public:
118  LongCache(const FieldCachePtr& wrapper = FieldCachePtr());
119  virtual ~LongCache();
120 
122 
123 protected:
124  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
125 };
126 
127 class DoubleCache : public Cache {
128 public:
129  DoubleCache(const FieldCachePtr& wrapper = FieldCachePtr());
130  virtual ~DoubleCache();
131 
133 
134 protected:
135  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
136 };
137 
138 class StringCache : public Cache {
139 public:
140  StringCache(const FieldCachePtr& wrapper = FieldCachePtr());
141  virtual ~StringCache();
142 
144 
145 protected:
146  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
147 };
148 
149 class StringIndexCache : public Cache {
150 public:
151  StringIndexCache(const FieldCachePtr& wrapper = FieldCachePtr());
152  virtual ~StringIndexCache();
153 
155 
156 protected:
157  virtual boost::any createValue(const IndexReaderPtr& reader, const EntryPtr& key);
158 };
159 
161 public:
162  FieldCacheEntryImpl(const LuceneObjectPtr& readerKey, const String& fieldName, int32_t cacheType, const boost::any& custom, const boost::any& value);
163  virtual ~FieldCacheEntryImpl();
164 
166 
167 protected:
169  String fieldName;
170  int32_t cacheType;
171  boost::any custom;
172  boost::any value;
173 
174 public:
175  virtual LuceneObjectPtr getReaderKey();
176  virtual String getFieldName();
177  virtual int32_t getCacheType();
178  virtual boost::any getCustom();
179  virtual boost::any getValue();
180 };
181 
182 }
183 
184 #endif
virtual void purgeAllCaches()
Instructs the FieldCache to forcibly expunge all entries from the underlying caches. This is intended only to be used for test methods as a way to ensure a known base state of the Cache. It should not be relied on for "Cache maintenance" in general application code.
StringCache(const FieldCachePtr &wrapper=FieldCachePtr())
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
boost::shared_ptr< FieldCache > FieldCachePtr
Definition: LuceneTypes.h:334
Definition: FieldCacheImpl.h:51
Definition: FieldCacheImpl.h:94
boost::weak_ptr< FieldCache > FieldCacheWeakPtr
Definition: LuceneTypes.h:334
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)=0
boost::shared_ptr< InfoStream > InfoStreamPtr
Definition: LuceneTypes.h:532
boost::shared_ptr< LuceneObject > LuceneObjectPtr
Definition: LuceneTypes.h:539
virtual ~Cache()
Definition: FieldCacheImpl.h:138
virtual ~StringCache()
Definition: FieldCacheImpl.h:105
boost::shared_ptr< DoubleParser > DoubleParserPtr
Definition: LuceneTypes.h:328
WeakMapLuceneObjectMapEntryAny readerCache
Definition: FieldCacheImpl.h:81
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
Definition: FieldCacheImpl.h:149
virtual int32_t hashCode()
Composes a hashcode based on the field and type.
StringIndexCache(const FieldCachePtr &wrapper=FieldCachePtr())
virtual ~LongCache()
virtual String getFieldName()
virtual Collection< FieldCacheEntryPtr > getCacheEntries()
Generates an array of CacheEntry objects representing all items currently in the FieldCache.
virtual StringIndexPtr getStringIndex(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found reads the term values in fi...
virtual ~DoubleCache()
MapStringCache caches
Definition: FieldCacheImpl.h:20
Internal cache.
Definition: FieldCacheImpl.h:72
FieldCacheWeakPtr _wrapper
Definition: FieldCacheImpl.h:77
boost::any custom
Definition: FieldCacheImpl.h:61
Cache(const FieldCachePtr &wrapper=FieldCachePtr())
String fieldName
Definition: FieldCacheImpl.h:169
FieldCacheEntryImpl(const LuceneObjectPtr &readerKey, const String &fieldName, int32_t cacheType, const boost::any &custom, const boost::any &value)
virtual ~ByteCache()
Definition: FieldCacheImpl.h:127
virtual boost::any getCustom()
virtual Collection< uint8_t > getBytes(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found, reads the terms in field a...
virtual int32_t getCacheType()
boost::any value
Definition: FieldCacheImpl.h:172
LongCache(const FieldCachePtr &wrapper=FieldCachePtr())
virtual void purge(const IndexReaderPtr &r)
Remove this reader from the cache, if present.
virtual InfoStreamPtr getInfoStream()
virtual LuceneObjectPtr getReaderKey()
The default cache implementation, storing all values in memory. A WeakHashMap is used for storage...
Definition: FieldCacheImpl.h:15
boost::shared_ptr< ByteParser > ByteParserPtr
Definition: LuceneTypes.h:289
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
boost::shared_ptr< IndexReader > IndexReaderPtr
Definition: LuceneTypes.h:157
int32_t cacheType
Definition: FieldCacheImpl.h:170
Base class for all Lucene classes.
Definition: LuceneObject.h:31
virtual ~IntCache()
IntCache(const FieldCachePtr &wrapper=FieldCachePtr())
virtual Collection< double > getDoubles(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found, reads the terms in field a...
boost::shared_ptr< Entry > EntryPtr
Definition: LuceneTypes.h:331
String field
Definition: FieldCacheImpl.h:57
InfoStreamPtr infoStream
Definition: FieldCacheImpl.h:24
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Definition: AbstractAllTermDocs.h:12
Definition: FieldCacheImpl.h:116
virtual void setInfoStream(const InfoStreamPtr &stream)
If non-null, FieldCacheImpl will warn whenever entries are created that are not sane according to Fie...
boost::shared_ptr< IntParser > IntParserPtr
Definition: LuceneTypes.h:376
DoubleCache(const FieldCachePtr &wrapper=FieldCachePtr())
Definition: FieldCacheImpl.h:160
A unique Identifier/Description for each item in the FieldCache. Can be useful for logging/debugging...
Definition: FieldCache.h:255
virtual Collection< int32_t > getInts(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found, reads the terms in field a...
virtual Collection< int64_t > getLongs(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found, reads the terms in field a...
virtual bool equals(const LuceneObjectPtr &other)
Two of these are equal if they reference the same field and type.
virtual void purge(const IndexReaderPtr &r)
Drops all cache entries associated with this reader. NOTE: this reader must precisely match the reade...
virtual Collection< String > getStrings(const IndexReaderPtr &reader, const String &field)
Checks the internal cache for an appropriate entry, and if none are found, reads the term values in f...
boost::shared_ptr< LongParser > LongParserPtr
Definition: LuceneTypes.h:378
boost::shared_ptr< StringIndex > StringIndexPtr
Definition: LuceneTypes.h:460
virtual ~Entry()
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
Maintains caches of term values.
Definition: FieldCache.h:17
ByteCache(const FieldCachePtr &wrapper=FieldCachePtr())
virtual boost::any getValue()
boost::any custom
Definition: FieldCacheImpl.h:171
LuceneObjectPtr readerKey
Definition: FieldCacheImpl.h:165
Entry(const String &field, const boost::any &custom)
Creates one of these objects for a custom comparator/parser.
virtual void initialize()
Called directly after instantiation to create objects that depend on this object being fully construc...
virtual boost::any createValue(const IndexReaderPtr &reader, const EntryPtr &key)
virtual void printNewInsanity(const InfoStreamPtr &infoStream, const boost::any &value)

clucene.sourceforge.net