You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Urvashi Gadi <ug...@emory.edu> on 2006/03/03 21:37:22 UTC

"filtering" using RangeFilter class

Hi All,

I am trying to filter my search using RangeFilter class but i get 
BooleanQuery TooManyClauses exception.

Exception in thread "main" 
org.apache.lucene.search.BooleanQuery$TooManyClauses

at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:109)
at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:100)
at org.apache.lucene.search.RangeQuery.rewrite(RangeQuery.java:92)
at org.apache.lucene.search.IndexSearcher.rewrite(IndexSearcher.java:171)
at org.apache.lucene.search.Query.weight(Query.java:91)
.....
.....

Snapshot of my code is as follows

rangeFilter = new RangeQuery(new Term(metadata, lowerVal), new 
Term(metadata, upperVal), true);
QueryFilter orgFilter = new QueryFilter(rangeFilter);
Query query = QueryParser.parse(userQuery, "contents", new 
StandardAnalyzer());
hits = is.search(query, orgFilter);

Any pointers and help will be greatly appreciated.

Best regards,
Urvashi




---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: "filtering" using RangeFilter class

Posted by Chris Hostetter <ho...@fucit.org>.
: I am trying to filter my search using RangeFilter class but i get
: BooleanQuery TooManyClauses exception.

You aren't useing a RangeFilter, you are using a RangeQuery ... they are
very different beasts.  RangeQuery works fine for small ranges, or when
you want the term frequencies of the terms in the range to affect the
scores -- but RangeFilter is what you want to use when you don't want the
scores to vary based on the matching term, or when you are dealing with a
very large range of values.

Wrapping a RangeQuery in a QueryFilter doesn't change the internal
behavior, just the way you use it.

: rangeFilter = new RangeQuery(new Term(metadata, lowerVal), new Term(metadata, upperVal), true);
: QueryFilter orgFilter = new QueryFilter(rangeFilter);
: Query query = QueryParser.parse(userQuery, "contents", new StandardAnalyzer());
: hits = is.search(query, orgFilter);

try this instead...

  hits = is.search(query, new RangeFilter(metadata,lowerVal,upperVal,true,true));




-Hoss


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org