Make DocsEnum subclass of DocIdSetIterator
------------------------------------------
Key: LUCENE-2109
URL: https://issues.apache.org/jira/browse/LUCENE-2109
Project: Lucene - Java
Issue Type: Improvement
Components: Index
Affects Versions: Flex Branch
Reporter: Uwe Schindler
Assignee: Uwe Schindler
Fix For: Flex Branch
Spinoff from LUCENE-1458:
One thing I came along long time ago, but now with a new API it get's
interesting again:
DocsEnum should extend DocIdSetIterator, that would make it simplier to use and
implement e.g. in MatchAllDocQuery.Scorer, FieldCacheRangeFilter and so on. You
could e.g. write a filter for all documents that simply returns the docs
enumeration from IndexReader.
So it should be an abstract class that extends DocIdSetIterator. It has the
same methods, only some methods must be a little bit renamed. The problem is,
because java does not support multiple inheritace, we cannot also extends
attributesource Would DocIdSetIterator be an interface it would work (this is
one of the cases where interfaces for really simple patterns can be used, like
iterators).
The problem with multiple inheritance could be solved by an additional method
attributes() that creates a new AttributeSource on first access then (because
constructing an AttributeSource is costly). The same applies for the other
*Enums, it should be separated for lazy init.
DocsEnum could look like this:
{code}
public abstract class DocsEnum extends DocIdSetIterator {
private AttributeSource atts = null;
public int freq()
public DontKnowClassName positions()
public final AttributeSource attributes() {
if (atts==null) atts=new AttributeSource();
return atts;
}
...default impl of the bulk access using the abstract methods from
DocIdSetIterator
}
{code}
--
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]