This was my second idea, if you really want to have this empty one. Instead
of returing a SortedVIntList at all just create a subclass of the abstract
one:

 

  public static final DocIdSet EMPTY_DOCIDSET = new DocIdSet() {
    public DocIdSetIterator iterator() {
      return EmptyDocIdSetIterator.getInstance();
    }
  };



By the way, this iterator is not conformant to the spec, which says, before
calling nextDoc() it should return -1!

 

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de

  _____  

From: Shai Erera [mailto:ser...@gmail.com] 
Sent: Monday, July 27, 2009 12:32 PM
To: java-dev@lucene.apache.org
Subject: Re: svn commit: r798091 -
/lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.j
ava

 

And BTW, now that I look at DIS.EMPTY, I think it can be improved by
defining it like this:

  public static final DocIdSet EMPTY_DOCIDSET = new SortedVIntList(new
int[0]) {
    public DocIdSetIterator iterator() {
      return EmptyDocIdSetIterator.getInstance();
    }
  };

Instead of having its iterator() always creating a new instance, it can
return EmptyDISI's single instance.

I can open an issue, but I think this can be committed quite trivially by
one of the committers.

Shai

On Mon, Jul 27, 2009 at 1:26 PM, Uwe Schindler <u...@thetaphi.de> wrote:

Right, and you can simply get an iterator from it.


-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de

> -----Original Message-----
> From: Robert Muir [mailto:rcm...@gmail.com]
> Sent: Monday, July 27, 2009 12:24 PM
> To: java-dev@lucene.apache.org
> Subject: Re: svn commit: r798091 -
> /lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator
> .java
>
> here it is: DocIdSet.EMPTY_DOCIDSET
>
> /** An empty {...@code DocIdSet} instance for easy use (this is currently
>    * implemented using a {...@link SortedVIntList}). */
>
> On Mon, Jul 27, 2009 at 6:18 AM, Uwe Schindler<u...@thetaphi.de> wrote:
> > Why do we need this class? There is already a static final empty
> iterator
> > available in DocIdSetIterator.EMPTY_DOCIDSET_ITERATOR (or something like
> > that name)?
> >
> > -----
> > Uwe Schindler
> > H.-H.-Meier-Allee 63, D-28213 Bremen
> > http://www.thetaphi.de
> > eMail: u...@thetaphi.de
> >
> >> From: mikemcc...@apache.org [mailto:mikemcc...@apache.org]
> >> Sent: Monday, July 27, 2009 12:03 PM
> >> To: java-comm...@lucene.apache.org
> >> Subject: svn commit: r798091 -
> >>
> /lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator
> >> .java
> >>
> >> Author: mikemccand
> >> Date: Mon Jul 27 10:02:34 2009
> >> New Revision: 798091
> >>
> >> URL: http://svn.apache.org/viewvc?rev=798091
<http://svn.apache.org/viewvc?rev=798091&view=rev> &view=rev
> >> Log:
> >> LUCENE-1754: add EmptyDocIdSetIterator
> >>
> >> Added:
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.
> >> java   (with props)
> >>
> >> Added:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.
> >> java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> >> search/EmptyDocIdSetIterator.java?rev=798091&view=auto
> >>
> ==========================================================================
> >> ====
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.
> >> java (added)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.
> >> java Mon Jul 27 10:02:34 2009
> >> @@ -0,0 +1,42 @@
> >> +package org.apache.lucene.search;
> >> +
> >> +/**
> >> + * Licensed to the Apache Software Foundation (ASF) under one or more
> >> + * contributor license agreements.  See the NOTICE file distributed
> with
> >> + * this work for additional information regarding copyright ownership.
> >> + * The ASF licenses this file to You under the Apache License, Version
> >> 2.0
> >> + * (the "License"); you may not use this file except in compliance
> with
> >> + * the License.  You may obtain a copy of the License at
> >> + *
> >> + *     http://www.apache.org/licenses/LICENSE-2.0
> >> + *
> >> + * Unless required by applicable law or agreed to in writing, software
> >> + * distributed under the License is distributed on an "AS IS" BASIS,
> >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> >> implied.
> >> + * See the License for the specific language governing permissions and
> >> + * limitations under the License.
> >> + */
> >> +
> >> +import java.io.IOException;
> >> +
> >> +/**
> >> + * An empty implementation for {...@link DocIdSetIterator}. This can be
> used
> >> by
> >> + * classes which receive a null {...@link DocIdSet} from
> >> + * {...@link Filter#getDocIdSet(org.apache.lucene.index.IndexReader)}.
> >> + */
> >> +public final class EmptyDocIdSetIterator extends DocIdSetIterator {
> >> +
> >> +  private static final DocIdSetIterator instance = new
> >> EmptyDocIdSetIterator();
> >> +
> >> +  public static DocIdSetIterator getInstance() { return instance; }
> >> +
> >> +  // to prevent instantiation
> >> +  private EmptyDocIdSetIterator() { }
> >> +
> >> +  public int advance(int target) throws IOException { return
> >> NO_MORE_DOCS; }
> >> +
> >> +  public int docID() { return NO_MORE_DOCS; }
> >> +
> >> +  public int nextDoc() throws IOException { return NO_MORE_DOCS; }
> >> +
> >> +}
> >>
> >> Propchange:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/search/EmptyDocIdSetIterator.
> >> java
> >> -----------------------------------------------------------------------
> ---
> >> ----
> >>     svn:eol-style = native
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> > For additional commands, e-mail: java-dev-h...@lucene.apache.org
> >
> >
>
>
>
> --
> Robert Muir
> rcm...@gmail.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-dev-h...@lucene.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

 

Reply via email to