[ 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]