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