s.getTransaction().begin();
BooleanQuery query = new BooleanQuery();
query.add( new TermQuery( new Term("teacher", "andre") ), BooleanClause.Occur.SHOULD );
query.add( new TermQuery( new Term("teacher", "max") ), BooleanClause.Occur.SHOULD );
query.add( new TermQuery( new Term("teacher", "aaron") ), BooleanClause.Occur.SHOULD );
FullTextQuery ftQuery = s.createFullTextQuery( query, Driver.class );
assertEquals("No filter should happen", 3, ftQuery.getResultSize() );
ftQuery = s.createFullTextQuery( query, Driver.class );
ftQuery.enableFullTextFilter( "cacheresultstest");
assertEquals("Should filter out all", 0, ftQuery.getResultSize() );
// HSEARCH-174 - we call System.gc() to force a garbage collection.
// Prior to the fix for HSEARCH-174 this would cause the filter to be
// garbage collected since Lucene used weak references.
System.gc();
ftQuery = s.createFullTextQuery( query, Driver.class );
ftQuery.enableFullTextFilter( "cacheresultstest");
try {
ftQuery.getResultSize();
}
catch (IllegalStateException e) {
fail("Cache results does not work");
}
ftQuery = s.createFullTextQuery( query, Driver.class );
ftQuery.enableFullTextFilter( "cacheinstancetest");
assertEquals("Should filter out all", 0, ftQuery.getResultSize() );
ftQuery = s.createFullTextQuery( query, Driver.class );
ftQuery.enableFullTextFilter( "cacheinstancetest");
try {
ftQuery.getResultSize();
fail("Cache instance does not work");
}
catch (IllegalStateException e) {
//success
}