Browse Source

增加型号搜索页码过大处理

wangyc 7 years ago
parent
commit
99d43ccb4d

+ 17 - 8
mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -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);
 			}