| | |
| | | } |
| | | |
| | | |
| | | 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<>(); |
| | |
| | | } |
| | | } |
| | | |
| | | //第一页而且不为高清时搜索 |
| | | //第一页,不为高清,主搜索引擎无法搜索到内容时搜索 |
| | | 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(); |
| | |
| | | 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); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | class SearchResult { |
| | | public static class SearchResult { |
| | | private int totalCount; |
| | | private List<VideoInfo> videoInfoList; |
| | | |