I just thought of an interesting test for whether
toString() is reasonable. You could log/flag
when the reloaded query differs. I.e.
String queryFromToString;  // your stored form
Query newQ = parser.parse(queryFromToString);
if (newQ.toString != queryFromToString) {
  log some stuff or throw an exception or....
}

That'd provide you a reality check...

Erick

On Jan 17, 2008 10:32 AM, Erick Erickson <[EMAIL PROTECTED]> wrote:

> I believe, but I'm not sure, that query and newQuery
> are not guaranteed to be equivalent. So I'd be cautious
> about this approach. But if it works for you....
>
> I'm assuming that you're somehow programmatically
> constructing the query and therefore can't just
> store the original string. I'd *always* store the
> original rather than a processed query if I could,
> just on general principles.
>
> What is it that you're trying to accomplish anyway?
> Perhaps there's a better approach....
>
> Erick
>
>
> On Jan 17, 2008 6:07 AM, prabin meitei <[EMAIL PROTECTED]> wrote:
>
> > Hi Erick,
> >   Thanks for your response. I have tried the folowing way and seems to
> > be
> > working. Tell me if there is any problem with the approach.
> >
> > String str = query.toString();
> > QueryParser parser = new QueryParser("", new StandardAnalyzer);
> > Query newQuery = parser.parse(str);
> >
> > now use *newQuery* for making queries
> >
> >
> > I understand that in the constructor of QueryParser it takes default
> > field
> > and a analyzer. If I put a blank field it seems to work. Putting null
> > gives
> > a null pointer exception.
> >
> > Regards,
> > Prabin
> >
> >
> >
> > On Jan 16, 2008 7:44 PM, Erick Erickson < [EMAIL PROTECTED]>
> > wrote:
> >
> > > As I remember from various threads, toString is more of
> > > a debugging aid and you cannot completely rely on the
> > > transformation from a parsed query -> tostring -> parsed query
> > > to be reliable. But this is "something I remember", so take
> > > it with a grain of salt (you might want to search the mail
> > > archive to see if my memory is correct).
> > >
> > > That said, use BooleanQuery to add as many clauses in
> > > as many ways as you want.
> > >
> > > Actually, I don't know how I'd go about storing a programmatically
> > > constructed query, I'd sure like to know if there's a way. You could
> > > certainly store the original query if you were taking user input and
> > > parsing it...
> > >
> > > Best
> > > Erick
> > >
> > > On Jan 16, 2008 4:22 AM, prabin meitei <[EMAIL PROTECTED]>
> > wrote:
> > >
> > > > Hi ,
> > > >    I want to construct a query from string. how can I do it??
> >  Actually
> > > i
> > > > saved a query(a boolean query) as string (using query.toString()).
> > > > Is there a way to reconstruct the query from the string i saved? How
> > can
> > > i
> > > > add more clauses to the  reconstructed query?
> > > > Thanks in advance.
> > > >
> > > > Prabin
> > > >
> > >
> >
>
>

Reply via email to