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 > > > > > > > > > > >