lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anuj Shah <anujshahw...@gmail.com>
Subject Re: Get fields from a Query object
Date Thu, 05 Aug 2010 10:53:51 GMT
Apologies Erick, missed your question.

I'm on version 3.0

On Thu, Aug 5, 2010 at 11:52 AM, Anuj Shah <anujshahwork@gmail.com> wrote:

> Having delved a bit more into the code it looks like every MultiTermQuery
> descendant fails to implement the extractTerms method. This does make sense,
> as it is not possible to list every term that satisfies a wildcard query.
>
> I also notice that most Query classes including the MultiTermQuery's, have
> a getField method. But, this is not part of any common interface or base
> class. It would be beneficial to have a public extractFields method which
> operates in the same way as extractTerms. Perhaps a feature request can be
> raised for this.
>
> I've had a go at using a regular expression on the query string, but that
> is becoming extremely convoluted due to escaping, quotations and the default
> fieldname.
>
> My only other idea is a giant recursive method which will instanceof and
> casting to re-curse the entire Boolean structure of a Query object.
>
>
> Does anyone else have any other ideas?
>
> Anuj
>
>
>
>
>
> On Tue, Aug 3, 2010 at 9:49 PM, Erick Erickson <erickerickson@gmail.com>wrote:
>
>> Hmmmm. Assuming you called rewrite, I'm going to have to defer
>> that one, I'm not familiar enough with how range queries operate.
>>
>> But what version of Lucene are you using?
>>
>> Sorry I can't be more help
>> Erick
>>
>> On Tue, Aug 3, 2010 at 5:02 AM, Anuj Shah <anujshahwork@gmail.com> wrote:
>>
>> > Thanks, that does seem good in theory. I can get the field from each of
>> the
>> > terms and add them to a Set to de-dupe.
>> >
>> > However, in practice queries of the following nature seems to fail with
>> an
>> > UnsupportedOperationException:
>> > field:a*
>> > field:[a TO b]
>> >
>> > Delving into the code a bit I see the following in the Query class
>> >  /**
>> >   * Expert: adds all terms occurring in this query to the terms set.
>> Only
>> >   * works if this query is in its {@link #rewrite rewritten} form.
>> >   *
>> >   * @throws UnsupportedOperationException if this query is not yet
>> > rewritten
>> >   */
>> >  public void extractTerms(Set<Term> terms) {
>> >    // needs to be implemented by query subclasses
>> >    throw new UnsupportedOperationException();
>> >  }
>> >
>> > Does this imply that some concrete Query classes have not overridden
>> this
>> > method?
>> >
>> >
>> >
>> >
>> >
>> > On Mon, Aug 2, 2010 at 4:01 PM, Erick Erickson <erickerickson@gmail.com
>> > >wrote:
>> >
>> > > Did you look at Query.extractTerms? I think that'll work for you.
>> > > Note that the query must be rewritten, and that the set of terms will
>> > > have duplicate fields. i.e. if you search field1:Erick +field1:James
>> > > I expect you'll have two terms in the set that are on field1.
>> > >
>> > > Best
>> > > Erick
>> > >
>> > > On Mon, Aug 2, 2010 at 8:16 AM, Anuj Shah <anujshahwork@gmail.com>
>> > wrote:
>> > >
>> > > > My code has been given a query string, which we parse into the Query
>> > > object
>> > > > and would like to get a list of fields from.
>> > > >
>> > > > I'm assuming there exists a method to do so, as it seems like a
>> useful
>> > > > function. If not should I be parsing the string for fields myself.
>> > > >
>> > > > Anuj
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > On Sun, Aug 1, 2010 at 2:21 AM, Erick Erickson <
>> > erickerickson@gmail.com
>> > > > >wrote:
>> > > >
>> > > > > Could you explain more about what you're trying to do? You're
>> writing
>> > > the
>> > > > > query
>> > > > > after all, so you probably already know what went into it.
>> > > > >
>> > > > > Which shows that I don't understand what you want to do at all.
>> > > > >
>> > > > > Best
>> > > > > Erick
>> > > > >
>> > > > > On Sat, Jul 31, 2010 at 9:41 AM, Anuj Shah <
>> anujshahwork@gmail.com>
>> > > > wrote:
>> > > > >
>> > > > > > Hi,
>> > > > > >
>> > > > > > Is there a way to get all the fields involved in a query?
>> > > > > >
>> > > > > > Thanks
>> > > > > >
>> > > > > > Anuj
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message