For the query I am using *newQ.toString* equals *queryFrom.ToString *well, what i am trying to accomplish is that I need to search an index (quite often say interval of around 15 mins) and the query depends on other activities done by the user till that point of a time. but i don't want the query to be changed for a particular time period. (say 2 days) i want to store the query so that i can use it for my search without being affected by current or immediate activities from user. once the query becomes 2 day old then i'll reconstruct the query considering the activities happened during the last two days. Is there a better approach?
On Jan 17, 2008 9:08 PM, Erick Erickson <[EMAIL PROTECTED]> wrote: > 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 > > > > > > > > > > > > > > > > >