lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <..@incani.com>
Subject Catching BooleanQuery.TooManyClauses
Date Sat, 15 Apr 2006 05:00:57 GMT
Hi Lucene Users,

I would like to catch BooleanQuery.TooManyClauses exception for certain
wildcard searches and display a 'subset' of results.  I have used the
WildcardTermEnum to give me the first X documents matching the wildcard
query.  Below is the code I use to implement the solution.  

Without any performance concerns is this the best solution?
Or should I just tell the user to refine their query!?

Thanks

Ben

===== QueryParserTest.java ================================================ 
...
public class QueryParserTest extends LuceneTestCase {
	...
	private static int MAX_HITS = 10;
	public void testCatchTooManyClauses() throws Exception {
		reader = IndexReader.open(directory);
		String queryStr = "9*";
		String field = "PART_NBR";
		Hits hits = null;
		Vector docList;
		try {
			System.out.println("query: " + queryStr);
			System.out.println("field: " + field);
			hits =
searcher.search(parser.parse(field+":"+queryStr));
			docList = new Vector(hits.length());
			Iterator docListIt = hits.iterator();
			while(docListIt.hasNext())
	
docList.add(((Hit)docListIt.next()).getDocument());
		}
		catch(BooleanQuery.TooManyClauses ex) {
			System.out.println("catch
BooleanQuery.TooManyClauses, refining query");
			Term term = new Term(field, queryStr);

			WildcardTermEnum wte = new WildcardTermEnum(reader,
term);
			int cnt = 0;
			docList = new Vector(MAX_HITS);
			while(wte.next() && cnt++ < MAX_HITS) {
				term = wte.term();
				TermQuery query = new TermQuery(new
Term(field, term.text()));
				System.out.println("search for " +
query.getTerm().text());
				hits = searcher.search(query);
				Iterator docListIt = hits.iterator();
				while(docListIt.hasNext())
	
docList.add(((Hit)docListIt.next()).getDocument());
			}
		}
		System.out.println("found:" + docList.size());

	}
...
===== QueryParserTest.java ================================================ 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.4.1/312 - Release Date: 14/04/2006
 


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


Mime
View raw message