Просмотр исходного кода

simplify kind and brand search

sunyj 8 лет назад
Родитель
Сommit
0ffc429e4c
1 измененных файлов с 33 добавлено и 40 удалено
  1. 33 40
      src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

+ 33 - 40
src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -52,13 +52,8 @@ public class SearchServiceImpl implements SearchService {
 
 	@Override
 	public SPage<Long> getKindIds(String keyword, Integer page, Integer size) {
-		if (SearchUtils.isKeywordInvalid(keyword)) {
-			throw new SearchException("搜索关键词无效:" + keyword);
-		}
-		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, new Sort(sortKind()), page, size);
+		List<Long> ids = new ArrayList<>();
+		SPage<Document> documents = getKindDocuments(keyword, 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()) {
@@ -70,18 +65,13 @@ public class SearchServiceImpl implements SearchService {
 
 	@Override
 	public SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) {
-		if (SearchUtils.isKeywordInvalid(keyword)) {
-			throw new SearchException("搜索关键词无效:" + keyword);
-		}
-		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, new Sort(sortKind()), page, size);
-		SPage<Map<String, Object>> sPage = new SPage<Map<String, Object>>(documents.getTotalPage(),
+		List<Map<String, Object>> kinds = new ArrayList<>();
+		SPage<Document> documents = getKindDocuments(keyword, page, size);
+		SPage<Map<String, Object>> sPage = new SPage<>(documents.getTotalPage(),
 				documents.getTotalElement(), documents.getPage(), documents.getSize(), documents.isFirst(),
 				documents.isLast());
 		for (Document document : documents.getContent()) {
-			Map<String, Object> kind = new HashMap<String, Object>();
+			Map<String, Object> kind = new HashMap<>();
 			kind.put("id", Long.parseLong(document.get(SearchConstants.KIND_ID_FIELD)));
 			kind.put("nameCn", document.get(SearchConstants.KIND_NAMECN_FIELD));
 			kinds.add(kind);
@@ -90,6 +80,15 @@ public class SearchServiceImpl implements SearchService {
 		return sPage;
 	}
 
+	private SPage<Document> getKindDocuments(String keyword, Integer page, Integer size){
+		if (SearchUtils.isKeywordInvalid(keyword)) {
+			throw new SearchException("搜索关键词无效:" + keyword);
+		}
+		BooleanQuery booleanQuery = SearchUtils.getBooleanQuery(SearchConstants.KIND_NAMECN_FIELD, keyword);
+		logger.info(booleanQuery.toString());
+		return SearchUtils.getDocuments(SearchConstants.KIND_TABLE_NAME, booleanQuery, new Sort(sortKind()), page, size);
+	}
+
     /**
      * @return 类目排序规则
      */
@@ -120,18 +119,8 @@ public class SearchServiceImpl implements SearchService {
 
 	@Override
 	public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) {
-		if (SearchUtils.isKeywordInvalid(keyword)) {
-			throw new SearchException("搜索关键词无效:" + keyword);
-		}
-		List<Long> ids = new ArrayList<Long>();
-		BooleanQuery booleanQuery = new BooleanQuery();
-		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMECN_FIELD, keyword),
-				BooleanClause.Occur.SHOULD);
-		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMEEN_FIELD, keyword),
-				BooleanClause.Occur.SHOULD);
-		logger.info(booleanQuery.toString());
-		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.BRAND_TABLE_NAME, booleanQuery, new Sort(sortBrand()), page,
-				size);
+		List<Long> ids = new ArrayList<>();
+		SPage<Document> documents = getBrandDocuments(keyword, 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()) {
@@ -143,18 +132,8 @@ public class SearchServiceImpl implements SearchService {
 
 	@Override
 	public SPage<Map<String, Object>> getBrands(String keyword, Integer page, Integer size) {
-		if (SearchUtils.isKeywordInvalid(keyword)) {
-			throw new SearchException("搜索关键词无效:" + keyword);
-		}
-		List<Map<String, Object>> brands = new ArrayList<Map<String, Object>>();
-		BooleanQuery booleanQuery = new BooleanQuery();
-		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMECN_FIELD, keyword),
-				BooleanClause.Occur.SHOULD);
-		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMEEN_FIELD, keyword),
-				BooleanClause.Occur.SHOULD);
-		logger.info(booleanQuery.toString());
-		SPage<Document> documents = SearchUtils.getDocuments(SearchConstants.BRAND_TABLE_NAME, booleanQuery, new Sort(sortBrand()), page,
-				size);
+		List<Map<String, Object>> brands = new ArrayList<>();
+		SPage<Document> documents = getBrandDocuments(keyword, page, size);
 		SPage<Map<String, Object>> sPage = new SPage<Map<String, Object>>(documents.getTotalPage(),
 				documents.getTotalElement(), documents.getPage(), documents.getSize(), documents.isFirst(),
 				documents.isLast());
@@ -170,6 +149,20 @@ public class SearchServiceImpl implements SearchService {
 		return sPage;
 	}
 
+	private SPage<Document> getBrandDocuments(String keyword, Integer page, Integer size){
+		if (SearchUtils.isKeywordInvalid(keyword)) {
+			throw new SearchException("搜索关键词无效:" + keyword);
+		}
+		BooleanQuery booleanQuery = new BooleanQuery();
+		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMECN_FIELD, keyword),
+				BooleanClause.Occur.SHOULD);
+		booleanQuery.add(SearchUtils.getBooleanQuery(SearchConstants.BRAND_NAMEEN_FIELD, keyword),
+				BooleanClause.Occur.SHOULD);
+		logger.info(booleanQuery.toString());
+		return SearchUtils.getDocuments(SearchConstants.BRAND_TABLE_NAME, booleanQuery, new Sort(sortBrand()), page,
+				size);
+	}
+
 	/**
 	 * @return 品牌排序规则
 	 */