From 4011b8d0b377af33e2bc435f7726329630d706cb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 02 三月 2021 18:28:52 +0800
Subject: [PATCH] 搜索引擎接口更新

---
 src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java |  133 +++++++++++++++++++++++++-------------------
 1 files changed, 75 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java b/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java
index cc55f50..936f88c 100644
--- a/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java
+++ b/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java
@@ -20,21 +20,19 @@
 import org.springframework.data.solr.core.query.Criteria;
 import org.springframework.data.solr.core.query.Query;
 import org.springframework.data.solr.core.query.SimpleQuery;
-import org.springframework.data.solr.core.query.SolrDataQuery;
 import org.springframework.data.solr.core.query.result.ScoredPage;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 鎼滅储寮曟搸-涓撹緫鏁版嵁绠$悊
  */
 @Component
 public class SolrAlbumDataManager {
+
+    private final static String CORE_NAME = "buwan_album";
 
     private final Logger logger = LoggerFactory.getLogger(SolrAlbumDataManager.class);
 
@@ -52,11 +50,11 @@
 
 
     public void saveOrUpdate(VideoInfo videoInfo) {
-        UpdateResponse updateResponse = solrTemplate.saveBean(SolrVideoFactory.create(videoInfo, videoInfo.getResourceList()));
+        UpdateResponse updateResponse = solrTemplate.saveBean(CORE_NAME, SolrVideoFactory.create(videoInfo, videoInfo.getResourceList()));
         if (updateResponse.getStatus() == 0) {
-            solrTemplate.commit();
+            solrTemplate.commit(CORE_NAME);
         } else {
-            solrTemplate.rollback();
+            solrTemplate.rollback(CORE_NAME);
         }
     }
 
@@ -65,62 +63,77 @@
         for (VideoInfo vi : videoInfoList) {
             solrVideoList.add(SolrVideoFactory.create(vi, vi.getResourceList()));
         }
-        UpdateResponse updateResponse = solrTemplate.saveBeans(solrVideoList);
+        UpdateResponse updateResponse = solrTemplate.saveBeans(CORE_NAME, solrVideoList);
         if (updateResponse.getStatus() == 0) {
-            solrTemplate.commit();
+            solrTemplate.commit(CORE_NAME);
         } else {
-            solrTemplate.rollback();
+            solrTemplate.rollback(CORE_NAME);
         }
     }
 
     /**
-     *鍒犻櫎鎵�鏈�
+     * 鍒犻櫎鎵�鏈�
      */
-    public void clear() {
-        Query query = new SimpleQuery("name:*");
-        UpdateResponse updateResponse = solrTemplate.delete(query);
-        if (updateResponse.getStatus() == 0) {
-            solrTemplate.commit();
-        } else {
-            solrTemplate.rollback();
-        }
-    }
-
+//    public void clear() {
+//        Query query = new SimpleQuery("name:*");
+//        UpdateResponse updateResponse = solrTemplate.delete(query);
+//        if (updateResponse.getStatus() == 0) {
+//            solrTemplate.commit();
+//        } else {
+//            solrTemplate.rollback();
+//        }
+//    }
     public void deleteById(String id) {
-
-
-        UpdateResponse updateResponse = solrTemplate.deleteById(id);
+        UpdateResponse updateResponse = solrTemplate.deleteByIds(CORE_NAME, id);
         if (updateResponse.getStatus() == 0) {
-            solrTemplate.commit();
+            solrTemplate.commit(CORE_NAME);
         } else {
-            solrTemplate.rollback();
+            solrTemplate.rollback(CORE_NAME);
         }
     }
 
     public SolrVideo findOne(String id) {
-        SolrVideo solrVideo = solrTemplate.getById(id, SolrVideo.class);
-        return solrVideo;
+        Optional<SolrVideo> solrVideo = solrTemplate.getById(CORE_NAME, id, SolrVideo.class);
+        return solrVideo.get();
     }
 
     public SolrResultDTO find(SolrVideoSearchFilter filter, int page, int pageSize) {
+        if (filter.getKey() == null) {
+            filter.setKey("");
+        }
         logger.info(filter.getKey() + "#" + page);
-        Query query = new SimpleQuery("name:\"" + filter.getKey() + "\"");
-
+        Query query = null;
+        if (!StringUtil.isNullOrEmpty(filter.getKey())) {
+            //solr绮惧噯妫�绱㈤渶瑕佸甫寮曞彿
+            query = new SimpleQuery("name:\"" + filter.getKey() + "\"");
+        } else {
+            query = new SimpleQuery();
+        }
         Criteria criteria = new Criteria("contenttype").is(filter.getContentType());
 
         if (filter.getVideoType() != null) {
             criteria = criteria.and("root_video_type").is(filter.getVideoType());
         }
+
+        if (filter.getActor() != null) {
+            criteria = criteria.and("mainactor").expression("\"" + filter.getActor() + "\"");
+        }
+
+        if (filter.getDirector() != null) {
+            criteria = criteria.and("director").expression("\"" + filter.getDirector() + "\"");
+        }
+
         if (filter.getResourceIds() != null && filter.getResourceIds().length > 0) {
             criteria = criteria.and("resourceIds").contains(filter.getResourceIds());
         }
+
 
         /** 娣诲姞鏉′欢 */
         if (criteria != null)
             query.addCriteria(criteria);
 
         /** 璁剧疆鍒嗛〉寮�濮嬭褰曟暟(绗竴椤�) 榛樿0 */
-        query.setOffset((page - 1) * pageSize);
+        query.setOffset((page - 1) * pageSize * 1L);
         /** 璁剧疆姣忛〉鏄剧ず璁板綍鏁帮紝榛樿10 */
         query.setRows(pageSize);
         if (StringUtil.isNullOrEmpty(filter.getSortKey())) {
@@ -128,7 +141,7 @@
         } else {
             query.addSort(new Sort(Sort.Direction.DESC, filter.getSortKey()));
         }
-        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(query, SolrVideo.class);
+        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrVideo.class);
         System.out.println("鎬昏褰曟暟锛�" + result.getTotalElements());
         List<SolrVideo> list = result.getContent();
         return new SolrResultDTO(list, (int) result.getTotalElements());
@@ -137,10 +150,10 @@
     public List<String> getSuggestKeyList(String key) {
         Query query = new SimpleQuery("name:\"" + key + "\"");
         /** 璁剧疆鍒嗛〉寮�濮嬭褰曟暟(绗竴椤�) 榛樿0 */
-        query.setOffset(0);
+        query.setOffset(0L);
         /** 璁剧疆姣忛〉鏄剧ず璁板綍鏁帮紝榛樿10 */
         query.setRows(10);
-        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(query, SolrVideo.class);
+        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrVideo.class);
         System.out.println("鎬昏褰曟暟锛�" + result.getTotalElements());
         List<SolrVideo> list = result.getContent();
         List<String> keyList = new ArrayList<>();
@@ -158,31 +171,35 @@
         long count = albumVideoMapService.countAll();
         int pageSize = 100;
         int pageCount = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
-        for (int i = 3; i < pageCount; i++) {
-            List<String> videoIds = new ArrayList<>();
-            List<AlbumVideoMap> albumVideoMapList = albumVideoMapService.listAll(i + 1, pageSize);
-            for (AlbumVideoMap map : albumVideoMapList) {
-                videoIds.add(map.getVideoId());
-            }
-            List<VideoInfo> videoList = videoInfoService.listByVideoIds(videoIds);
-
-            //鑾峰彇璧勬簮ID
-            List<ResourceVideo> rvList = resourceVideoService.getResourceList(videoList);
-            Map<String, List<VideoResource>> map = new HashMap<>();
-            for (ResourceVideo rv : rvList) {
-                if (rv.getVideo() != null && rv.getResource() != null) {
-                    if (map.get(rv.getVideo().getId()) == null)
-                        map.put(rv.getVideo().getId(), new ArrayList<>());
-                    map.get(rv.getVideo().getId()).add(rv.getResource());
+        for (int i = 0; i < pageCount; i++) {
+            try {
+                List<String> videoIds = new ArrayList<>();
+                List<AlbumVideoMap> albumVideoMapList = albumVideoMapService.listAll(i + 1, pageSize);
+                for (AlbumVideoMap map : albumVideoMapList) {
+                    videoIds.add(map.getVideoId());
                 }
-            }
-            for (VideoInfo vi : videoList) {
-                if (map.get(vi.getId()) != null) {
-                    vi.setResourceList(map.get(vi.getId()));
-                }
-            }
+                List<VideoInfo> videoList = videoInfoService.listByVideoIds(videoIds);
 
-            saveOrUpdate(videoList);
+                //鑾峰彇璧勬簮ID
+                List<ResourceVideo> rvList = resourceVideoService.getResourceList(videoList);
+                Map<String, List<VideoResource>> map = new HashMap<>();
+                for (ResourceVideo rv : rvList) {
+                    if (rv.getVideo() != null && rv.getResource() != null) {
+                        if (map.get(rv.getVideo().getId()) == null)
+                            map.put(rv.getVideo().getId(), new ArrayList<>());
+                        map.get(rv.getVideo().getId()).add(rv.getResource());
+                    }
+                }
+                for (VideoInfo vi : videoList) {
+                    if (map.get(vi.getId()) != null) {
+                        vi.setResourceList(map.get(vi.getId()));
+                    }
+                }
+
+                saveOrUpdate(videoList);
+            } catch (Exception e) {
+                logger.error("涓撹緫鎼滅储寮曟搸鏁版嵁鍚屾澶辫触");
+            }
         }
     }
 

--
Gitblit v1.8.0