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;
}
Show replies by date