[ 
https://issues.apache.org/jira/browse/LUCENE-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Busch updated LUCENE-584:
---------------------------------

    Attachment: lucene-584-take2.patch

OK, here's a new version of the patch.
Changes:
- Removed MatchFilter entirely.
- Filter.bits(IndexReader) is now deprecated and not abstract anymore. 
Filter.bits(IndexReader) returns null, and Filter.matcher(IndexReader)
returns the new BitSetMatcher. This allows to create new Filters that 
only implement the new getMatcher(IndexReader) method. Existing filters
on the other hand will still work together with the BitSetMatcher.

- The new class BitSetFilter extends Filter and defines the abstract
method bits(IndexReader), just as Filter did before this patch.

- I deprecated also CachingWrapperFilter and RemoteCachingWrapperFilter
and added corresponding CachingBitSetFilter and RemoteCachingBitSetFilter
which do essentially the same but only accept BitSetFilters.

All testcases pass and believe this should be fully backwards compatible.
Also, all core classes that call Filter.bits() are deprecated themselves.

In Lucene 3.0 we should make the following changes:
- Remove Filter.bits() and define Filter.getMatcher() abstract.
- Remove CachingWrapperFilter and RemoteCachingWrapperFilter
(and corresponding testcases)
- Add new matchers, like the OpenBitSetMatcher and SortedVIntMatcher
and add the DefaultMatcher class. (these classes are all located in
Paul's patch files)

> Decouple Filter from BitSet
> ---------------------------
>
>                 Key: LUCENE-584
>                 URL: https://issues.apache.org/jira/browse/LUCENE-584
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Search
>    Affects Versions: 2.0.1
>            Reporter: Peter Schäfer
>            Assignee: Michael Busch
>            Priority: Minor
>         Attachments: bench-diff.txt, bench-diff.txt, lucene-584-take2.patch, 
> lucene-584.patch, Matcher-20070905-2default.patch, 
> Matcher-20070905-3core.patch, Matcher-20071122-1ground.patch, Some 
> Matchers.zip
>
>
> {code}
> package org.apache.lucene.search;
> public abstract class Filter implements java.io.Serializable 
> {
>   public abstract AbstractBitSet bits(IndexReader reader) throws IOException;
> }
> public interface AbstractBitSet 
> {
>   public boolean get(int index);
> }
> {code}
> It would be useful if the method =Filter.bits()= returned an abstract 
> interface, instead of =java.util.BitSet=.
> Use case: there is a very large index, and, depending on the user's 
> privileges, only a small portion of the index is actually visible.
> Sparsely populated =java.util.BitSet=s are not efficient and waste lots of 
> memory. It would be desirable to have an alternative BitSet implementation 
> with smaller memory footprint.
> Though it _is_ possibly to derive classes from =java.util.BitSet=, it was 
> obviously not designed for that purpose.
> That's why I propose to use an interface instead. The default implementation 
> could still delegate to =java.util.BitSet=.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to