You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Michael Busch (JIRA)" <ji...@apache.org> on 2008/01/10 09:05:52 UTC
[jira] Updated: (LUCENE-584) Decouple Filter from BitSet
[ 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-take3-part2.patch
lucene-584-take3-part1.patch
OK, I created a new patch based on the recent feedback.
This patch introduces two new abstract classes:
{code:java}
/**
* A DocIdSet contains a set of doc ids. Implementing classes must provide
* a {@link DocIdSetIterator} to access the set.
*/
public abstract class DocIdSet {
public abstract DocIdSetIterator iterator();
}
/**
* This abstract class defines methods to iterate over a set of
* non-decreasing doc ids.
*/
public abstract class DocIdSetIterator {
public abstract int doc();
public abstract boolean next() throws IOException;
public abstract boolean skipTo(int target) throws IOException;
}
{code}
Additional changes:
- Scorer extends DocIdSetIterator now.
- Filter.bits(IndexReader) is not abstract anymore. It is deprecated and
returns null. Added method Filter.getDocIdSet(IndexReader) which returns
new DocIdBitSet(bits(reader)) for backwards compatibility.
- Added getDocIdSet(IndexReader) implementations to all core readers and
deprecated bits(IndexReader). The Filters (e. g. RangeFilter) are now
using OpenBitSet instead of BitSet.
- Made according changes to the SpanFilter classes.
- Fixed a bug in OpenBitSetIterator. It has an integer curDocId now, which
doc() returns. Before doc() sometimes returned wrong values. I also added
TestOpenBitSet (take from current Solr trunk).
I haven't changed the contrib Filter implementations yet, they still use
the old (deprecated) API. We should address this with a different issue.
All core & contrib tests pass. This patch should also be fully backwards
compatible.
> 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
> Fix For: 2.4
>
> Attachments: bench-diff.txt, bench-diff.txt, lucene-584-take2.patch, lucene-584-take3-part1.patch, lucene-584-take3-part2.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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org