Hi Rajesh,

TermQueries (and likewise other queries) take a Term object, which in turn
takes a String.  That String should be the analyzed version ("play") of your
originaly query word ("playing").  To get that, you need to feed your
analyzer a Reader of the string you wish to parse ("playing").  It will
output a TokenStream containing (in this case 1) tokens.  You can then use
the Token's .term() to get the analyzed version ("play") of the original
query word.  Note that when you feed it a multi-word input, or if you an
Analyzer which breaks tokens strangely, you will get multiple tokens back,
and it is up to you to decide what to do with them.  But when using your
index's analyzer, then each Token should correspond to it's own TermQuery,
since the terms in your index are broken up the same way.

Jack

On Wed, Jan 14, 2009 at 10:32 AM, Rajesh parab <rajesh_para...@yahoo.com>wrote:

>
> Thanks Ian.
>
> I agree with you on lowercasing of characters. My main concern is specific
> to stemming done by analyzers.
>
> For example, StandardAnalyzer will stem words like playing, played, plays,
> etc. to a common tokan "play" which will be stored in the index. Now, during
> searches, we would need same stemming to be performed on search tokens so
> that we can use equals searches and get correct results back. In this
> example, the search term "playing" or "plays" may not return the document as
> it is indexed with token "play".
>
> What I am not really getting it how I can use the same analyzer during
> searches is I am constructing queries manually.
>
> Regards,
> Rajesh
>
> --- On Tue, 1/13/09, Ian Lea <ian....@gmail.com> wrote:
>
> > From: Ian Lea <ian....@gmail.com>
> > Subject: Re: Using analyzer while constructing Lucene queries
> > To: java-user@lucene.apache.org, rajesh_para...@yahoo.com
> > Date: Tuesday, January 13, 2009, 9:33 AM
> > If you are building queries manually, bypassing analysis,
> > you just
> > need to make sure that you know what you are doing.  As a
> > trivial
> > example, if you are indexing with an analyzer that
> > downcases
> > everything then you need to pass lowercase terms to
> > TermQuery.
> >
> > You can still use an analyzer where appropriate e.g. to
> > parse a string
> > into a Query that you add to a BooleanQuery.
> >
> >
> > --
> > Ian.
> >
> >
> > On Tue, Jan 13, 2009 at 1:43 AM, Rajesh parab
> > <rajesh_para...@yahoo.com> wrote:
> > > Hi,
> > >
> > > For proper results during searches, the recommendation
> > is to use same analyzer for indexing and querying. We can
> > achieve this by passing the same analyzer, which was used
> > for indexing, to QueryParser to construct Lucene query and
> > use this query while searching the index.
> > >
> > > The question is - How can we use the analyzer that was
> > used for indexing, if we want to construct Lucene queries
> > manually using Query classes (like BooleanQuery, TermQuery,
> > PhraseQuery, etc) instead of using QueryParser?
> > >
> > > Is there any way to achieve it?
> > >
> > > Regards,
> > > Rajesh
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

Reply via email to