Browse Source

sort by visitCount and searchCount for Kind

sunyj 8 years ago
parent
commit
019a35c015
1 changed files with 14 additions and 2 deletions
  1. 14 2
      src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

+ 14 - 2
src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -58,7 +58,7 @@ public class SearchServiceImpl implements SearchService {
 		List<Long> ids = new ArrayList<Long>();
 		BooleanQuery booleanQuery = SearchUtils.getBooleanQuery(SearchConstants.KIND_NAMECN_FIELD, keyword);
 		logger.info(booleanQuery.toString());
-		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.KIND_TABLE_NAME, booleanQuery, page, size);
+		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.KIND_TABLE_NAME, booleanQuery, sortKind(), page, size);
 		SPage<Long> sPage = new SPage<Long>(documents.getTotalPage(), documents.getTotalElement(), documents.getPage(),
 				documents.getSize(), documents.isFirst(), documents.isLast());
 		for (Document document : documents.getContent()) {
@@ -76,7 +76,7 @@ public class SearchServiceImpl implements SearchService {
 		List<Map<String, Object>> kinds = new ArrayList<Map<String, Object>>();
 		BooleanQuery booleanQuery = SearchUtils.getBooleanQuery(SearchConstants.KIND_NAMECN_FIELD, keyword);
 		logger.info(booleanQuery.toString());
-		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.KIND_TABLE_NAME, booleanQuery, page, size);
+		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.KIND_TABLE_NAME, booleanQuery, sortKind(), page, size);
 		SPage<Map<String, Object>> sPage = new SPage<Map<String, Object>>(documents.getTotalPage(),
 				documents.getTotalElement(), documents.getPage(), documents.getSize(), documents.isFirst(),
 				documents.isLast());
@@ -90,6 +90,18 @@ public class SearchServiceImpl implements SearchService {
 		return sPage;
 	}
 
+    /**
+     * @return 类目排序规则
+     */
+    private Sort sortKind() {
+        // 访问量 > 搜索次数
+		SortField visitCountSortField = new SortField(SearchConstants.KIND_VISIT_COUNT_FIELD, Type.LONG, true);
+		visitCountSortField.setMissingValue(Long.MIN_VALUE);
+		SortField searchCountSortField = new SortField(SearchConstants.KIND_SEARCH_COUNT_FIELD, Type.LONG, true);
+		searchCountSortField.setMissingValue(Long.MIN_VALUE);
+		return new Sort(visitCountSortField, searchCountSortField);
+    }
+
 	@Override
 	public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) {
 		if (SearchUtils.isKeywordInvalid(keyword)) {