Hi, You can also traverse a BooleanQuery. Just do instanceof BooleanQuery checks and if it is a BooleanQuery recursively iterate over all clauses [you can use a BooleanQuery in a for-each java loop as it implements Iterable]. For each clause recurse and check types again. Then you should be able to detect all types of queries in the tree.
Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: u...@thetaphi.de > -----Original Message----- > From: Sandeep Khanzode [mailto:sandeep_khanz...@yahoo.com.INVALID] > Sent: Saturday, November 28, 2015 12:22 PM > To: java-user@lucene.apache.org > Subject: Re: Determine whether a MatchAllQuery or a Query with atleast > one Term > > Hi, > Actually, the MatchAllQuery, for all I know (since it is invoked by the > client) > can be wrapped in a Bool Query type. Hence, it is difficult for me to traverse > the Bool Query clauses and determine MatchAll, whereas there may be > other clauses which do contain a TermQuery or a NumericRangeQuery in > which case a MatchAllQuery check is futile. > Given any query, Bool Query or MatchAll, or a specific subclass of Query, > what would be the safe way to determine that this is not a MatchAll query > without any terms, or whether this is a query that contains at least one term > or range? -----------------------Thanks n Regards, > Sandeep Ramesh Khanzode > > > On Saturday, November 28, 2015 12:30 PM, Michael Wilkowski > <m...@silenteight.com> wrote: > > > Instanceof? > > MW > Sent from Mi phone > On 28 Nov 2015 06:57, "Sandeep Khanzode" > <sandeep_khanz...@yahoo.com.invalid> > wrote: > > > Hi, > > I have a question. > > In my program, I need to check whether the input query is a MatchAll > Query > > that contains no terms, or a Query (any variant) that has at least one > > term. For typical Term queries, this seems reasonable to be done with > > Query.extractTerms(Set<> terms) which gives the list of terms. > > However, when there is a NumericRangeQuery, this method throws an > > UnsupportedOperationException. > > How can I determine that a NumericRangeQuery or any non-Term query > exists > > in the Input Query and differentiate it from the MatchAllQuery? -- SRK > > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org