admin
2020-09-12 2778cf2a16823f9b1153a0549b47f7b503176a17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.yeshi.buwan.service.manager;
 
import com.yeshi.buwan.domain.SolrVideo;
import com.yeshi.buwan.domain.VideoInfo;
import com.yeshi.buwan.util.factory.SolrVideoFactory;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.springframework.data.solr.core.SolrTemplate;
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.result.ScoredPage;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
/**
 * 搜索引擎-专辑数据管理
 */
@Component
public class SolrAlbumDataManager {
 
    @Resource
    private SolrTemplate solrTemplate;
 
 
    public void saveOrUpdate(VideoInfo videoInfo) {
        UpdateResponse updateResponse = solrTemplate.saveBean(SolrVideoFactory.create(videoInfo));
        if (updateResponse.getStatus() == 0) {
            solrTemplate.commit();
        } else {
            solrTemplate.rollback();
        }
    }
 
    public void saveOrUpdate(List<VideoInfo> videoInfoList) {
        List<SolrVideo> solrVideoList = new ArrayList<>();
        for (VideoInfo vi : videoInfoList) {
            solrVideoList.add(SolrVideoFactory.create(vi));
        }
        UpdateResponse updateResponse = solrTemplate.saveBeans(solrVideoList);
        if (updateResponse.getStatus() == 0) {
            solrTemplate.commit();
        } else {
            solrTemplate.rollback();
        }
    }
 
    public void deleteById(String id) {
        UpdateResponse updateResponse = solrTemplate.deleteById(id);
        if (updateResponse.getStatus() == 0) {
            solrTemplate.commit();
        } else {
            solrTemplate.rollback();
        }
    }
 
    public SolrVideo findOne(String id) {
        SolrVideo solrVideo = solrTemplate.getById(id, SolrVideo.class);
        return solrVideo;
    }
 
    public List<SolrVideo> findByKey(String key, Integer contentType, Integer videoType, int page) {
        int pageSize = 20;
        Query query = new SimpleQuery("name:\"" + key+"\"");
 
        Criteria criteria =new Criteria("contenttype").is(contentType);
 
        if (videoType != null)
            criteria = criteria.and("root_video_type").is(videoType);
 
        /** 添加条件 */
        if (criteria != null)
            query.addCriteria(criteria);
 
        /** 设置分页开始记录数(第一页) 默认0 */
        query.setOffset((page - 1) * page);
        /** 设置每页显示记录数,默认10 */
        query.setRows(pageSize);
        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(query, SolrVideo.class);
        System.out.println("总记录数:" + result.getTotalElements());
        List<SolrVideo> list = result.getContent();
        return list;
    }
 
    public List<String> getSuggestKeyList(String key) {
        Query query = new SimpleQuery("name:\""+key+"\"");
        /** 设置分页开始记录数(第一页) 默认0 */
        query.setOffset(0);
        /** 设置每页显示记录数,默认10 */
        query.setRows(10);
        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(query, SolrVideo.class);
        System.out.println("总记录数:" + result.getTotalElements());
        List<SolrVideo> list = result.getContent();
        List<String> keyList = new ArrayList<>();
        for (SolrVideo sv : list)
            if (!keyList.contains(sv.getName()))
                keyList.add(sv.getName());
        return keyList;
    }
 
 
}