admin
2021-08-27 8fee151ffae0c3818694b7318583814bf92663e2
src/main/java/com/yeshi/buwan/service/imp/SearchService.java
@@ -10,7 +10,7 @@
import com.yeshi.buwan.domain.web.HotSearchAdmin;
import com.yeshi.buwan.dto.search.SolrResultDTO;
import com.yeshi.buwan.dto.search.SolrVideoSearchFilter;
import com.yeshi.buwan.pptv.PPTVUtil;
import com.yeshi.buwan.videos.pptv.PPTVUtil;
import com.yeshi.buwan.service.inter.video.VideoInfoExtraService;
import com.yeshi.buwan.service.manager.search.SolrAlbumVideoDataManager;
import com.yeshi.buwan.service.manager.search.SolrInternetSearchVideoDataManager;
@@ -34,6 +34,8 @@
@Service
public class SearchService {
    private Logger logger = LoggerFactory.getLogger(SearchService.class);
    private final String ALBUM_SEARCH_FUZZY_KEYS = "《,》,。";
    @Resource
@@ -288,7 +290,7 @@
    }
    public SearchResult searchAlbum(int videoType, String key, int page, int pageSize) {
    public SearchResult searchAlbum(int videoType, String key, List<Long> resourceIds, int page, int pageSize) {
        List<VideoInfo> localList = new ArrayList<>();
        //专辑视频集合
        Set<String> solrAlbumVids = new HashSet<>();
@@ -298,8 +300,15 @@
        if (videoType == Constant.SEARCH_RESULT_TYPE_HIGH_DEFINITION) {
            filter.setResourceIds(Arrays.asList(new String[]{PPTVUtil.RESOURCE_ID + ""}));
            logger.info("高清搜索# key:{}", key);
        } else
        } else {
            List<String> rids = new ArrayList<>();
            for (Long rid : resourceIds) {
                rids.add(rid + "");
            }
            filter.setResourceIds(rids);
            filter.setVideoType(videoType == 0 ? null : videoType);
        }
        filter.setContentType(1);
        SolrResultDTO solrResultDTO = solrAlbumDataManager.find(filter, page, pageSize);
@@ -316,7 +325,7 @@
            }
        }
        //第一页,不为高清,主搜索引擎无法搜索到内容时搜索
        //第一页,不为高清时搜索
        if (page == 1 && videoType != Constant.SEARCH_RESULT_TYPE_HIGH_DEFINITION) {
            //page为1时 全网搜
            SolrResultDTO internetSearchResultDTO = solrInternetSearchVideoDataManager.find(filter, 1, 20);
@@ -327,7 +336,7 @@
                    isvList.addAll(iList);
                //删除前面有的数据,根据rootType与名称筛选
                for (int i = 0; i < isvList.size(); i++) {
                    String uniqueId = isvList.get(i).getName() + "#" + isvList.get(i).getRootType();
                    String uniqueId = isvList.get(i).getName() + "#" + isvList.get(i).getRootType() + "#" + isvList.get(i).getYear();
                    if (albumSet.contains(uniqueId)) {
                        isvList.remove(i);
                        i--;
@@ -350,7 +359,11 @@
                    float s1 = CompareStrSimUtil.getSimilarityRatio(o1.getName(), key, true);
                    float s2 = CompareStrSimUtil.getSimilarityRatio(o2.getName(), key, true);
//                        if (s1 != s2)//相似度越高越靠前
                    try {
                        return s1 != s2 ? (s2 > s1 ? 1 : -1) : (Integer.parseInt(o2.getYear()) - Integer.parseInt(o1.getYear()));
                    } catch (Exception e) {
                    return s2 > s1 ? 1 : -1;
                    }
//                        else
//                            return o1.getDefinition() - o2.getDefinition();//高清排在前
                } else {
@@ -438,7 +451,7 @@
            localList = new ArrayList<>();
            //先搜索专辑
            int pageSize = 20;
            SearchResult searchResult = searchAlbum(videoType, key, page, pageSize);
            SearchResult searchResult = searchAlbum(videoType, key, resourceList, page, pageSize);
            if (searchResult != null && searchResult.videoInfoList != null) {
                localList.addAll(searchResult.videoInfoList);
            }