admin
2021-07-30 19533a17aa55fafc70d0a385928e785cb50e1ebc
src/main/java/com/yeshi/buwan/service/manager/SolrAlbumVideoDataManager.java
@@ -18,6 +18,7 @@
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.domain.Sort;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.core.query.Criteria;
@@ -135,7 +136,15 @@
        Query query = null;
        if (!StringUtil.isNullOrEmpty(filter.getKey())) {
            //solr精准检索需要带引号
            query = new SimpleQuery(new Criteria("name").expression("\"" + filter.getKey() + "\"").or("mainactor").expression("\"" + filter.getKey() + "\""));
            if (filter.isFuzzy()) {
                query = new SimpleQuery(new Criteria("name").expression(filter.getKey()));
            } else {
                try {
                    query = new SimpleQuery(new Criteria("nameStr").startsWith(filter.getKey()).or("mainactor").expression("\"" + filter.getKey() + "\""));
                } catch (InvalidDataAccessApiUsageException e) {
                    query = new SimpleQuery(new Criteria("nameStr").expression("\""+filter.getKey()+"\"").or("mainactor").expression("\"" + filter.getKey() + "\""));
                }
            }
        } else if (!StringUtil.isNullOrEmpty(filter.getActor())) {
            query = new SimpleQuery(new Criteria("mainactor").expression("\"" + filter.getActor() + "\""));
        } else if (!StringUtil.isNullOrEmpty(filter.getDirector())) {
@@ -152,8 +161,12 @@
        if (filter.getResourceIds() != null && filter.getResourceIds().length > 0) {
            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("resourceIds").contains(filter.getResourceIds())));
        }
        if(filter.getFreeType()!=null){
        if (filter.getFreeType() != null) {
            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("free_type").is(filter.getFreeType())));
        }
        if (filter.getArea() != null) {
            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("area").contains(filter.getArea())));
        }
@@ -161,9 +174,7 @@
        query.setOffset((page - 1) * pageSize);
        /** 设置每页显示记录数,默认10 */
        query.setRows(pageSize);
        if (StringUtil.isNullOrEmpty(filter.getSortKey())) {
            query.addSort(new Sort(Sort.Direction.DESC, "year"));
        } else {
        if (!StringUtil.isNullOrEmpty(filter.getSortKey())) {
            query.addSort(new Sort(Sort.Direction.DESC, filter.getSortKey()));
        }
@@ -175,11 +186,13 @@
    }
    public List<String> getSuggestKeyList(String key) {
        Query query = new SimpleQuery("name:\"" + key + "\"");
        Query query = new SimpleQuery(new Criteria("nameStr").expression(key+"*"));
        /** 设置分页开始记录数(第一页) 默认0 */
        query.setOffset(0);
        /** 设置每页显示记录数,默认10 */
        query.setRows(10);
        ScoredPage<SolrAlbumVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrAlbumVideo.class);
        System.out.println("总记录数:" + result.getTotalElements());
        List<SolrAlbumVideo> list = result.getContent();
@@ -224,7 +237,7 @@
                }
                saveOrUpdate(videoList);
            } catch (Exception e) {
                logger.error("专辑搜索引擎数据同步失败",e);
                logger.error("专辑搜索引擎数据同步失败", e);
            }
        }
    }