admin
2021-04-02 d551bef5e2b09bd98681cf97807988c9863e66fc
src/main/java/com/yeshi/buwan/service/imp/SearchService.java
@@ -288,7 +288,7 @@
    }
    private SearchResult searchAlbum(int videoType, String key, int page, int pageSize) {
    public SearchResult searchAlbum(int videoType, String key, int page, int pageSize) {
        List<VideoInfo> localList = new ArrayList<>();
        //专辑视频集合
        Set<String> solrAlbumVids = new HashSet<>();
@@ -316,12 +316,15 @@
            }
        }
        //第一页而且不为高清时搜索
        //第一页,不为高清,主搜索引擎无法搜索到内容时搜索
        if (page == 1 && videoType != Constant.SEARCH_RESULT_TYPE_HIGH_DEFINITION) {
            //page为1时 全网搜
            SolrResultDTO internetSearchResultDTO = solrInternetSearchVideoDataManager.find(filter, 1, 20);
            if (internetSearchResultDTO != null && internetSearchResultDTO.getVideoList().size() > 0) {
                List<InternetSearchVideo> isvList = internetSearchResultDTO.getVideoList();
                List<InternetSearchVideo> iList = internetSearchResultDTO.getVideoList();
                List<InternetSearchVideo> isvList = new ArrayList<>();
                if (iList != null && iList.size() > 0)
                    isvList.addAll(iList);
                //删除前面有的数据,根据rootType与名称筛选
                for (int i = 0; i < isvList.size(); i++) {
                    String uniqueId = isvList.get(i).getName() + "#" + isvList.get(i).getRootType();
@@ -333,11 +336,32 @@
                for (InternetSearchVideo sv : isvList) {
                    VideoInfo video = VideoInfoFactory.create(sv);
                    video = loadAlbumData(video);
                    localList.add(video);
                    if (albumCount < 3) {
                        localList.add(video);
                    } else {
                        if (video.getName().equalsIgnoreCase(key))
                            localList.add(video);
                    }
                }
            }
            //todo 按关键词的匹配度排序
            //按关键词的匹配度排序
            Comparator<VideoInfo> cm = new Comparator<VideoInfo>() {
                @Override
                public int compare(VideoInfo o1, VideoInfo o2) {
                    float s1 = CompareStrSimUtil.getSimilarityRatio(o1.getName(), key, true);
                    float s2 = CompareStrSimUtil.getSimilarityRatio(o2.getName(), key, true);
                    if (s1 != s2)//相似度越高越靠前
                        return s2 > s1 ? 1 : -1;
                    else
                        return o1.getDefinition() - o2.getDefinition();//高清排在前
                }
            };
            Collections.sort(localList, cm);
        }
        //未搜索到内容
        if (localList == null || localList.size() == 0) {
            logger.warn("专辑搜索无结果#{}", key);
        }
        return new SearchResult(albumCount, localList);
    }
@@ -708,7 +732,7 @@
    }
    class SearchResult {
    public static class SearchResult {
        private int totalCount;
        private List<VideoInfo> videoInfoList;