Browse Source

调整getDocument页码过大处理

wangyc 7 years ago
parent
commit
ffc7fe854f
1 changed files with 14 additions and 25 deletions
  1. 14 25
      mall-search/src/main/java/com/uas/search/util/SearchUtils.java

+ 14 - 25
mall-search/src/main/java/com/uas/search/util/SearchUtils.java

@@ -323,35 +323,24 @@ public class SearchUtils {
 				previousTopDocs = sort == null ? indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize()) :
 						indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize(), sort);
 				int totalHits = previousTopDocs.totalHits;
-				if ((sPage.getPage() - 1) * sPage.getSize() >= totalHits) {
-					sPage.setPage((int) Math.ceil(totalHits / (1.0 * sPage.getSize())));
-					if (sPage.getPage() > 1) {
-						int totalPage = (int) Math.ceil(totalHits / (1.0 * sPage.getSize()));
-						if (totalPage == 0) {
-							sPage.setTotalElement(0);
-							sPage.setTotalPage(0);
-							return sPage;
-						}
-						if (sPage.getPage() > totalPage) {
-							sPage.setPage(totalPage);
-							if (totalPage == 1) {
-								sPage.setFirst(true);
-								topDocs = previousTopDocs;
-							} else {
-								previousTopDocs = sort == null ? indexSearcher.search(query, (sPage.getPage() - 2) * sPage.getSize()) : indexSearcher.search(query, (sPage.getPage() - 2) * sPage.getSize(), sort);
-								ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
-								topDocs = sort == null ? indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize()) : indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize(), sort);
-							}
-						} else {
-							previousTopDocs = sort == null ? indexSearcher.search(query, (sPage.getPage() - 2) * sPage.getSize()) : indexSearcher.search(query, (sPage.getPage() - 2) * sPage.getSize(), sort);
-							ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
-							topDocs = sort == null ? indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize()) : indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize(), sort);
-						}
-					} else {
+				int totalPage = (int) Math.ceil(totalHits / (1.0 * sPage.getSize()));
+				if (totalPage == 0) {
+					sPage.setTotalElement(0);
+					sPage.setTotalPage(0);
+					return sPage;
+				}
+				if (sPage.getPage() > totalPage) {
+					sPage.setPage(totalPage);
+					if (totalPage == 1) {
 						sPage.setFirst(true);
 						topDocs = previousTopDocs;
+					} else {
+						previousTopDocs = sort == null ? indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize()) : indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize(), sort);
+						ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
+						topDocs = sort == null ? indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize()) : indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize(), sort);
 					}
 				} else {
+					previousTopDocs = sort == null ? indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize()) : indexSearcher.search(query, (sPage.getPage() - 1) * sPage.getSize(), sort);
 					ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
 					topDocs = sort == null ? indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize()) : indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], query, sPage.getSize(), sort);
 				}