lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Puneet Pawaia <puneet.paw...@gmail.com>
Subject Re: Forcing lucene to use specific field when processing parsed query
Date Sat, 06 Jul 2013 17:19:05 GMT
Thanks Jack.
I had planned on changing the field in the TermQuery or SpanTerm. Unless
SpanTerms also drilldown to TermQuery. Only couldn't find the getter method
name.
Guess I need to look at the docs some more.
Regards
Puneet Pawaia
On 6 Jul 2013 22:38, "Jack Krupansky" <jack@basetechnology.com> wrote:

> Each Query object has getter methods for each of its fields. If a field is
> a nested Query object, you will then have to recursively process it. Be
> prepared to do lots of "instanceof" conditionals. None of this is hard,
> just lots of dog work. Consult the Javadoc for the getter methods.
>
> And when you write your instanceof conditionals, be sure to include an
> "else" that displays the actual class name so that you can then add yet
> another instanceof.
>
> Now, what you are really looking for is the TermQuery, that has a field
> name - that's what you want to change.
>
> After you have called all of the getters, you create a new Query object of
> the current type (the type you referenced in the "instanceof") and return
> that new Query object. Recursion would return the new Query object.
>
> -- Jack Krupansky
>
> -----Original Message----- From: Puneet Pawaia
> Sent: Saturday, July 06, 2013 12:54 PM
> To: java-user@lucene.apache.org
> Subject: Re: Forcing lucene to use specific field when processing parsed
> query
>
> Hi Uwe
> Unfortunately, at the stage I am required to do this,  I do not have the
> query text. I only have the parsed query.
> I thought of iterating through the query clauses etc but could not find how
> to. What function allows me to do this ?
> Regards
> Puneet Pawaia
> On 6 Jul 2013 20:06, "Uwe Schindler" <uwe@thetaphi.de> wrote:
>
>  Hi,
>>
>> You can only do this manually with instanceof checks and walking through
>> BooleanClauses.
>>
>> The better way to fix your problem would be to change your query parser,
>> e.g. by overriding getFieldQuery and other protected methods to enforce a
>> specific field while parsing the query string.
>>
>> Uwe
>>
>>
>>
>> Puneet Pawaia <puneet.pawaia@gmail.com> schrieb:
>> >Hi all,
>> >
>> >I am using Lucene.Net 3.0.3 and need to search in a specific field
>> >(ignoring any fields specified in the query). I am given a parsed
>> >Lucene
>> >Query so I am unable to generate a parsed query with my required field.
>> >
>> >Is there any functionality in Lucene that allows me to loop through the
>> >terms of the query and change the field ? The given query would be a
>> >complex query where there would be spans, clauses etc.
>> >
>> >Or perhaps there is some way of forcing Lucene to ignore the fields
>> >given
>> >in the parsed query and used a specified field only.
>> >
>> >Any help would be most appreciated.
>> >
>> >Regards
>> >Puneet Pawaia
>>
>> --
>> Uwe Schindler
>> H.-H.-Meier-Allee 63, 28213 Bremen
>> http://www.thetaphi.de
>>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.**apache.org<java-user-unsubscribe@lucene.apache.org>
> For additional commands, e-mail: java-user-help@lucene.apache.**org<java-user-help@lucene.apache.org>
>
>

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