[hibernate-commits] Hibernate SVN: r15603 - search/trunk/src/java/org/hibernate/search/query.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Nov 20 11:42:49 EST 2008


Author: hardy.ferentschik
Date: 2008-11-20 11:42:49 -0500 (Thu, 20 Nov 2008)
New Revision: 15603

Modified:
   search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
   search/trunk/src/java/org/hibernate/search/query/QueryHits.java
Log:
 HSEARCH-302 
Now QueryHits takes into acount pagination settings when retrieving TopDocs.

Modified: search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java	2008-11-20 14:17:21 UTC (rev 15602)
+++ search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java	2008-11-20 16:42:49 UTC (rev 15603)
@@ -154,7 +154,6 @@
 					queryHits, searchFactoryImplementor, indexProjection, idFieldNames, allowFieldSelectionInProjection
 			);
 			for ( int index = first; index <= max; index++ ) {
-				//TODO use indexSearcher.getIndexReader().document( hits.id(index), FieldSelector(indexProjection) );
 				infos.add( extractor.extract( index ) );
 			}
 			Loader loader = getLoader( sess, searchFactoryImplementor );
@@ -342,7 +341,12 @@
 	private QueryHits getQueryHits(Searcher searcher) throws IOException {
 		org.apache.lucene.search.Query query = filterQueryByClasses( luceneQuery );
 		buildFilters();
-		QueryHits queryHits = new QueryHits( searcher, query, filter, sort );
+		QueryHits queryHits;
+		if ( maxResults == null ) { // try to make sure that we get the right amount of top docs
+			queryHits = new QueryHits( searcher, query, filter, sort );
+		} else {
+			queryHits = new QueryHits( searcher, query, filter, sort, first() + maxResults );
+		}
 		resultSize = queryHits.totalHits;
 		return queryHits;
 	}
@@ -574,7 +578,6 @@
 				0;
 	}
 
-
 	/**
 	 * Build the index searcher for this fulltext query.
 	 *

Modified: search/trunk/src/java/org/hibernate/search/query/QueryHits.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/QueryHits.java	2008-11-20 14:17:21 UTC (rev 15602)
+++ search/trunk/src/java/org/hibernate/search/query/QueryHits.java	2008-11-20 16:42:49 UTC (rev 15603)
@@ -45,14 +45,20 @@
 	public final Sort sort;
 	public final int totalHits;
 	public TopDocs topDocs;
-	
+
 	public QueryHits(Searcher searcher, org.apache.lucene.search.Query preparedQuery, Filter filter, Sort sort)
 			throws IOException {
+		this( searcher, preparedQuery, filter, sort, DEFAULT_TOP_DOC_RETRIEVAL_SIZE );
+	}
+
+	public QueryHits(Searcher searcher, org.apache.lucene.search.Query preparedQuery, Filter filter, Sort sort,
+					 Integer n )
+			throws IOException {
 		this.preparedQuery = preparedQuery;
 		this.searcher = searcher;
 		this.filter = filter;
 		this.sort = sort;
-		updateTopDocs( DEFAULT_TOP_DOC_RETRIEVAL_SIZE );
+		updateTopDocs( n );
 		totalHits = topDocs.totalHits;
 	}
 




More information about the hibernate-commits mailing list