|
|
@@ -1294,15 +1294,24 @@ public class SearchServiceImpl implements SearchService {
|
|
|
Sort sort = sortGoods(keyword, pageParams.getSort());
|
|
|
TopDocs hits;
|
|
|
if (pageParams.getPage() > 1) {// 不是第一页
|
|
|
- TopDocs previousHits = indexSearcher.search(booleanQuery,
|
|
|
- (pageParams.getPage() - 1) * pageParams.getSize(), sort, true, false);
|
|
|
+ TopDocs previousHits = indexSearcher.search(booleanQuery, (pageParams.getPage() - 1) * pageParams.getSize(), sort, true, false);
|
|
|
int totalHits = previousHits.totalHits;
|
|
|
- if ((pageParams.getPage() - 1) * pageParams.getSize() >= totalHits) {
|
|
|
- return map;
|
|
|
- }
|
|
|
- ScoreDoc[] previousScoreDocs = previousHits.scoreDocs;
|
|
|
- ScoreDoc after = previousScoreDocs[previousScoreDocs.length - 1];
|
|
|
- hits = indexSearcher.searchAfter(after, booleanQuery, pageParams.getSize(), sort, true, false);
|
|
|
+ int totalPage = (int) Math.ceil(totalHits / (1.0 * pageParams.getSize()));
|
|
|
+ if (pageParams.getPage() > totalPage) {
|
|
|
+ pageParams.setPage(totalPage);
|
|
|
+ if (totalPage == 1) {
|
|
|
+ hits = indexSearcher.search(booleanQuery, pageParams.getSize(), sort, true, false);
|
|
|
+ } else {
|
|
|
+ previousHits = indexSearcher.search(booleanQuery, (pageParams.getPage() - 1) * pageParams.getSize(), sort, true, false);
|
|
|
+ ScoreDoc[] previousScoreDocs = previousHits.scoreDocs;
|
|
|
+ ScoreDoc after = previousScoreDocs[previousScoreDocs.length - 1];
|
|
|
+ hits = indexSearcher.searchAfter(after, booleanQuery, pageParams.getSize(), sort, true, false);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ScoreDoc[] previousScoreDocs = previousHits.scoreDocs;
|
|
|
+ ScoreDoc after = previousScoreDocs[previousScoreDocs.length - 1];
|
|
|
+ hits = indexSearcher.searchAfter(after, booleanQuery, pageParams.getSize(), sort, true, false);
|
|
|
+ }
|
|
|
} else {
|
|
|
hits = indexSearcher.search(booleanQuery, pageParams.getSize(), sort, true, false);
|
|
|
}
|