Since its a final class, its not possible to subclass it, which is why I
wondered aloud earlier about the choice to make it protected in a final
class. ;-). I'll see if the other way you suggested (rewrite) gives me
access to the terms we need.

We chain together multiple custom built filters... I am just overriding the
filter.getDocIdSet() method and using the TermsEnum API to filter things we
need from our index in a customized way. I should say its more the "custom"
part than the "performant" part which is the reason why we want to use the
TermsEnum api.

BTW, I compiled a private Lucene core jar after changing the method to
public and it seemed to work fine.

CV


On Mon, Sep 30, 2013 at 4:35 PM, Michael McCandless <
luc...@mikemccandless.com> wrote:

> Well, it was protected just because we didn't think apps needed to
> call it directly.
>
> You could workaround it ... subclass it and add your own public method
> that delegates to .getTermsEnum.  Or access it via reflection.
>
> Alternatively, just call Query.rewrite() and the returned Query will
> reflect the terms that the original query had expanded to (though, it
> may rewrite to MultiTermQueryWrapperFilter, which won't get you the
> terms ...).
>
> But, can you describe more how you plan to create performant filters
> from this method?
>
> Mike McCandless
>
> http://blog.mikemccandless.com
>
>
> On Mon, Sep 30, 2013 at 1:18 PM, Chet Vora <chetv...@gmail.com> wrote:
> > Mike
> >
> > We want to use the lower level Terms API to create some custom high
> > performant filters ... is there any reason why the method
> > NumericRangeQuery.getTermsEnum() was made protected in the API as
> opposed to
> > public?
> >
> > CV
> >
> >
> > On Fri, Sep 27, 2013 at 4:15 PM, Michael McCandless
> > <luc...@mikemccandless.com> wrote:
> >>
> >> Normally you'd create a NumericRangeFilter/Query and just use that?
> >>
> >> Under the hood, Lucene uses that protected API to visit all matching
> >> terms...
> >>
> >> Mike McCandless
> >>
> >> http://blog.mikemccandless.com
> >>
> >>
> >> On Thu, Sep 26, 2013 at 9:59 AM, Chet Vora <chetv...@gmail.com> wrote:
> >> > Hi all
> >> >
> >> > I was trying to use the above enum to do some range search on dates...
> >> > this
> >> > enum is returned by NumericRangeQuery.getTermsEnum() but I realized
> that
> >> > this is a protected method of the class and since this is a final
> class,
> >> > I
> >> > can't see how I can use it. Maybe I'm missing something ?
> >> >
> >> > Would appreciate any pointers.
> >> >
> >> > Thanks
> >> >
> >> > CV
> >
> >
>

Reply via email to