Преглед на файлове

搜索页码异常调整

wangyc преди 7 години
родител
ревизия
bfe53591c2
променени са 1 файла, в които са добавени 20 реда и са изтрити 2 реда
  1. 20 2
      search-console-b2b/src/main/java/com/uas/search/console/b2b/service/impl/SearchServiceImpl.java

+ 20 - 2
search-console-b2b/src/main/java/com/uas/search/console/b2b/service/impl/SearchServiceImpl.java

@@ -370,10 +370,28 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
 			}
 			int totalHits = previousTopDocs.totalHits;
 			ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
+			// 搜索结果为空时,返回空集
+			if (totalHits == 0) {
+				sPage.setTotalElement(totalHits);
+				int totalPage = (int) Math.ceil(totalHits / (1.0 * sPage.getSize()));
+				sPage.setTotalPage(totalPage);
+				if (totalPage == sPage.getPage()) {
+					sPage.setLast(true);
+				}
+				sPage.setContent(new ArrayList<ScoreDoc>());
+				return sPage;
+			}
+			// 超出页码数时,返回第1页数据
 			if ((sPage.getPage() - 1) * sPage.getSize() >= totalHits) {
-				throw new SearchException("页码过大:元素总数量为" + totalHits);
+				sPage.setPage(1);
+				sPage.setFirst(true);
+				if (sort != null) {
+					topDocs = indexSearcher.search(booleanQuery, sPage.getSize(), sort);
+				} else {
+					topDocs = indexSearcher.search(booleanQuery, sPage.getSize());
+				}
 			}
-			if (sort != null) {
+			if (sort != null && sPage.getPage() > 1) {
 				topDocs = indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], booleanQuery,
 						sPage.getSize(), sort);
 			} else {