There are 2 considerations when caching filter results:

1) What was the criteria used to produce the results?
2) What version of the index were these results taken from?

CachingWrapperFilter takes care of 2) by using WeakHashMap keyed on IndexReader.

The filter you pass to CachingWrapperFilter must play it's part in taking care 
of 1) by implementing hashcode/equals.

You can then maintain an LRU hashmap of CachingWrapperFilters to keep only the 
most popular filters.

Incidentally, contrib's XMLQueryParser handles all this for you with a simple 
"CachedFilter" tag:

<FilteredQuery>
    <Query>
        <UserQuery>"Brittany Spears"</UserQuery>
    </Query>    
    <Filter>
        <CachedFilter>
            <RangeFilter fieldName="date" lowerTerm="19970409" 
upperTerm="19970412"/>
        </CachedFilter>
    </Filter>    
</FilteredQuery>


Cheers
Mark

----- Original Message ----
From: lucene user <[EMAIL PROTECTED]>
To: java-user@lucene.apache.org
Sent: Thursday, 25 October, 2007 10:36:14 AM
Subject: Re: Lucene Queries Over User-Editable Dynamic Categories of Documents

What do you means by 'Most caches are held in WeakHashMap...' is this
caching provided by CachingWrappingFilter or do we have to implement it
ourselves? I assume the former.

We will share results of our testing as soon as we have any - not sure
 how
generalizable they will be.

You have been super helpful! Very grateful! Thanks!

On 10/24/07, markharw00d <[EMAIL PROTECTED]> wrote:
>
> lucene user wrote:
> > Thanks for all your help!
> >
> > We are using Lucene 2.1.0 and TermsFilter seems to be new in Lucene
> 2.2.0.
> > I have not been able to find SortedVIntList in the javadocs at all.
> >
>
> No, SortedVIntList is in the patch I provided a link to earlier.
>
>
> > Because both SortedVIntList and a regular BitSet are based on
 Lucene
> > Document Numbers, which are not permanent, It seems we will need to
> > generate these objects fresh at least once per session. Any
 comments,
> > about that? Do I have that correct?
> >
> Yes. Most caches tend to be held in WeakHashMap keyed on IndexReader
 so
> that when a new reader takes over old caches are automatically
 garbage
> collected.
>
>
> > Our application includes the following filter implementation that
 we use
> for
> > a
> > slightly different end user category problem. We could easily use
 it for
> our
> > current problem as well.
> >
> > Is TermsFilter sufficiently better (faster, more compact, more
 correct,
> > etc.) to make upgrading
> > very important?
> >
> TermsFilter is in "contrib" and is stand-alone so should work with
 most
> Lucene versions.
> Your implementation looks to scan the whole termEnum whereas
 TermsFilter
> looks up only the selected terms using reader.termDocs(term).
> Benchmarking will tell you which is faster. I'd be interested to know
> the results.
>
> Cheers
> Mark
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>





      ___________________________________________________________ 
Want ideas for reducing your carbon footprint? Visit Yahoo! For Good  
http://uk.promotions.yahoo.com/forgood/environment.html

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to