I have a query that uses a filter... looking something like this:
BooleanQuery filterQuery = new BooleanQuery(); // add criteria QueryFilter qf = new QueryFilter(filterQuery); CachingWrapperFilter cwf = new CachingWrapperFilter(qf); BooleanQuery query = new BooleanQuery(); // add criteria // cached searcher searcher = index.getSearcher(); Sort sort = new Sort(); Hits = searcher.search(query, cwf, sort); That works fine if there are some criteria in filterQuery and query. But sometimes, the bean I'm passing in will not pass any criteria into the filterQuery part. If that's the case, cwf looks like this: CachingWrapperFilter(QueryFilter()) Passing that into the Hits = searcher.search(query, cwf, sort) method will result in no results. If there are no criteria in the filter, shouldn't that return all the results based on the query? For now... I've resorted to doing this: Hits hits = null; if(Validate.isEmpty(filterQuery.toString())) // own method to check if { // string is null or empty hits = searcher.search(query, sort); } else if(Validate.isEmpty(query.toString())) { hits = searcher.search(filterQuery, sort); } else { hits = searcher.search(query, cwf, sort); } Is this the best way to go about this?? Or is there a more elegant way?