lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erick Erickson" <erickerick...@gmail.com>
Subject Re: Using analyzer while constructing Lucene queries
Date Wed, 14 Jan 2009 18:54:31 GMT
I'm pretty sure that StandardAnalyzer does NOT stem, BTW.

But to your main question. I'm confused by your user of the
term "manually". When creating a query, you really have
two choices:

1> let the query parser do your work for you. The result of
the parse operation is a Query, which can be added
to a BooleanQuery. In this case you specify the analyzer
just as you would during indexing. PerFieldAnalyzerWrapper
is your friend.

2> Construct your queries by yourself, by using TermQuery,
PhraseQuery etc. directly. There are no Analyzers used when
choosing this option. You have to know what the effects of the
Analyzer used during indexing had on the field you're searching
and be sure you're doing something compatible.

HTH
Erick

On Wed, Jan 14, 2009 at 1:32 PM, Rajesh parab <rajesh_parab_1@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.lea@gmail.com> wrote:
>
> > From: Ian Lea <ian.lea@gmail.com>
> > Subject: Re: Using analyzer while constructing Lucene queries
> > To: java-user@lucene.apache.org, rajesh_parab_1@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_parab_1@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-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

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