Hello Erik,
Monday, September 15, 2003, 4:27:27 PM, you wrote:
EH> On Monday, September 15, 2003, at 09:45 AM, Bruce Ritchie wrote:
>> I would suggest *not* using caching inside of filters provided by
>> lucene but rather provide a wrapper to do the caching. The reason is
>> that some applications really don't want the libraries they use to be
>> a source of concern for memory usage. i.e. if I search for a string
>> using 10,000 different date filters (an extreme example, but possible)
>> I want the ability to control how those bitsets are going to be > cached.
EH> In the case of QueryFilter, simply construct a new one to avoid caching
EH> rather than reuse the same instance. So you have control there as
EH> well. The only thing that is cached is a BitSet, so it should be much
EH> of a memory usage concern.
>> public class CachedFilter extends Filter {
>> BitSet bits;
>> Filter filter;
>>
>> public CachedFilter(Filter filter) {
>> this.filter = filter;
>> this.bits = null;
>> }
>>
>> public BitSet bits(IndexReader reader) throws IOException {
>> if (bits != null) {
>> return bits;
>> }
>>
>> bits = filter.bits(reader);
>> return bits;
>> }
>> }
EH> You would have problems if you searched a different index or different
EH> instance of IndexReader even with your caching here. You should cache
EH> like QueryFilter does to avoid a potential mismatch with IndexReader
EH> instances.
EH> But you're implementation is exactly what I was envisioning with the
EH> added WeakHashMap of QueryFilter.
EH> Erik
EH> ---------------------------------------------------------------------
EH> To unsubscribe, e-mail: [EMAIL PROTECTED]
EH> For additional commands, e-mail: [EMAIL PROTECTED]
--
Best regards,
Maxim mailto:[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]