Search in sources :

Example 1 with Keyword

use of com.topcom.cms.es.vo.Keyword in project topcom-cloud by 545314690.

the class AccidentYuqingController method hotAccidentComment.

/**
 * 获取死亡人数前5名的事故文章的评论数量
 *
 * @param request
 * @param dateParam
 * @return
 */
@RequestMapping(value = "/hotAccidentComment", method = RequestMethod.POST)
public List<KV> hotAccidentComment(HttpServletRequest request, @RequestBody DateParam dateParam) {
    List<Accident> accidentList = accidentService.getTopNAccidents(dateParam, 5);
    List<KV> kvs = new ArrayList<>();
    for (Accident accident : accidentList) {
        // 事故概要
        String outline = accident.outline();
        AggRequest aggRequest = new AggRequest();
        aggRequest.setDate(dateParam);
        String companyName = accident.getCompanyName();
        String atype = accident.getAtype();
        String city = accident.getCity();
        com.topcom.cms.es.vo.Keyword keywords = null;
        if (StringUtils.isNotBlank(companyName)) {
            keywords = new Keyword(companyName, atype + "@" + city);
        } else {
            keywords = new Keyword("事故", atype + "@" + city);
        }
        aggRequest.setKeyword(keywords);
        long count = commentsService.countByArticle(aggRequest);
        kvs.add(new KV(outline, count));
    }
    kvs.sort(new Comparator<KV>() {

        @Override
        public int compare(KV o1, KV o2) {
            return o1.compareTo(o2);
        }
    });
    return kvs;
}
Also used : AggRequest(com.topcom.cms.es.vo.AggRequest) Keyword(com.topcom.cms.es.vo.Keyword) KV(com.topcom.cms.es.vo.KV) Keyword(com.topcom.cms.es.vo.Keyword) Accident(com.topcom.cms.mongo.domain.Accident)

Example 2 with Keyword

use of com.topcom.cms.es.vo.Keyword in project topcom-cloud by 545314690.

the class StaffSentimentController method searchOneStaff.

// 后期改用多线程查询,临时单线程查询
private StaffSentiment searchOneStaff(Staff staff, StaffSentimentRequest request) {
    StaffSentiment staffSentiment = new StaffSentiment();
    staffSentiment.setId(String.valueOf(staff.getId()));
    staffSentiment.setStaff(staff.toMap());
    BoolQueryRequest boolRequest = new BoolQueryRequest();
    boolRequest.setDate(request.getDate());
    boolRequest.setGroupName("nlp.sentiment.label");
    boolRequest.setKeyword(new Keyword(staff.getExpression()));
    PageRequest page = new PageRequest(1, 10);
    page.setOrders(request.getSortBy());
    boolRequest.setPage(page);
    boolRequest.setFiled(request.getFiled());
    boolRequest.setType(request.getArticleType());
    // 情感值
    Map kvMap = KV.kvList2Map(esManager.filterAndGroupBy(boolRequest));
    staffSentiment.setNEG((Long) (kvMap.get("NEG") == null ? 0 : kvMap.get("NEG")));
    staffSentiment.setNEU((Long) (kvMap.get("NEU") == null ? 0 : kvMap.get("NEU")));
    staffSentiment.setPOS((Long) (kvMap.get("POS") == null ? 0 : kvMap.get("POS")));
    // 总数 以及条新闻,最新?还是最负面?
    Page articlePage = esManager.findByMustShouldDateInType(boolRequest);
    if (articlePage.getTotalElements() > 0) {
        staffSentiment.setArticle((Map) articlePage.getContent().get(0));
        staffSentiment.setTotal(articlePage.getTotalElements());
        Long time = Long.valueOf(((Map) articlePage.getContent().get(0)).get("pubTime").toString());
        staffSentiment.setNewsDate(new Date(time));
    }
    return staffSentiment;
}
Also used : BoolQueryRequest(com.topcom.cms.es.vo.BoolQueryRequest) PageRequest(com.topcom.cms.common.page.PageRequest) Keyword(com.topcom.cms.es.vo.Keyword) StaffSentiment(com.topcom.cms.yuqing.domain.StaffSentiment) Page(org.springframework.data.domain.Page) Map(java.util.Map) Date(java.util.Date)

Example 3 with Keyword

use of com.topcom.cms.es.vo.Keyword in project topcom-cloud by 545314690.

the class DescriptionManagerImpl method getMaxType.

private List<KV> getMaxType(BoolQueryRequest boolQueryRequest, String groupName) {
    Keyword keyword = boolQueryRequest.getKeyword();
    DateParam dateParam = boolQueryRequest.getDate();
    String articleType = "";
    String[] type = boolQueryRequest.getType();
    if (type != null && type.length > 0) {
        articleType = type[0];
        for (int i = 1; i < type.length; i++) {
            articleType = articleType + "@" + type[i];
        }
    } else {
        articleType = "article";
    }
    List<KV> groupByType = allESDataService.filterAndGroupBy(keyword.getMustWord(), keyword.getShouldWord(), keyword.getMustNotWord(), dateParam.getStartDate(), dateParam.getEndDate(), boolQueryRequest.getFiled(), groupName, articleType, null, 20);
    if (groupByType == null || groupByType.size() == 0) {
        return null;
    }
    return groupByType;
}
Also used : Keyword(com.topcom.cms.es.vo.Keyword) KV(com.topcom.cms.es.vo.KV) DateParam(com.topcom.cms.common.page.DateParam)

Example 4 with Keyword

use of com.topcom.cms.es.vo.Keyword in project topcom-cloud by 545314690.

the class WarningManagerImpl method getSubjectWarningInfo.

@Deprecated
@Override
public Page<News> getSubjectWarningInfo(CustomSubject subject, int pageNum, int limit) {
    WarningTask warning = subject.getWarning();
    if (warning == null) {
        return new PageImpl<News>(new ArrayList<News>());
    }
    BoolQueryRequest request = new BoolQueryRequest();
    request.setType(null);
    request.setFiled(null);
    request.setKeyword(new Keyword(subject.getMustWord(), subject.getShouldWord(), subject.getMustNotWord()));
    // 本次预警时间
    Date thisWarningDate = new Date();
    // 上次预警时间
    Date lastWarningDate = warning.getLastWarningDate();
    if (lastWarningDate == null) {
        lastWarningDate = subject.getStartDate();
    }
    request.setDate(new DateParam(DateUtil.dateToString(lastWarningDate), DateUtil.dateToString(thisWarningDate)));
    request.setPage(new PageRequest(pageNum, limit, new Order(Sort.Direction.DESC, "pubTime")));
    List<KV> kvList = new ArrayList<>();
    // 媒体类型
    String[] type = warning.getType();
    if (type != null && type.length > 0) {
        kvList.add(new KV("type", type));
    }
    String[] sentimentLabel = warning.getSentimentLabel();
    // 情感类型
    if (sentimentLabel != null && sentimentLabel.length != 0) {
        kvList.add(new KV("nlp.sentiment.label", sentimentLabel));
    }
    request.setSearchKv(kvList);
    final Page page = newsService.findByMustShouldDateInType(request);
    return page;
}
Also used : PageImpl(org.springframework.data.domain.PageImpl) Order(com.topcom.cms.common.page.Order) BoolQueryRequest(com.topcom.cms.es.vo.BoolQueryRequest) Keyword(com.topcom.cms.es.vo.Keyword) ArrayList(java.util.ArrayList) Page(org.springframework.data.domain.Page) KV(com.topcom.cms.es.vo.KV) Date(java.util.Date) PageRequest(com.topcom.cms.common.page.PageRequest) News(com.topcom.cms.data.domain.News) WarningTask(com.topcom.cms.yuqing.domain.WarningTask) DateParam(com.topcom.cms.common.page.DateParam)

Example 5 with Keyword

use of com.topcom.cms.es.vo.Keyword in project topcom-cloud by 545314690.

the class WarningLogManagerImpl method getWarningInfo.

@Override
public Page getWarningInfo(WarningLog warningLog, int pageNum, int limit) {
    if (warningLog == null) {
        return new PageImpl<>(new ArrayList<>());
    }
    BoolQueryRequest request = new BoolQueryRequest();
    request.setType(null);
    request.setFiled(warningLog.getField());
    request.setKeyword(new Keyword(warningLog.getMustWord(), warningLog.getShouldWord(), warningLog.getMustNotWord()));
    /**
     * 数据发布时间:暂定三天内
     */
    // TODO:三天内合适不?
    // Date now = new Date();
    // request.setDate(new DateParam(DateUtil.dateToString(DateUtils.addDays(now, -3)), DateUtil.dateToString(now)));
    /**
     * 数据保存时间
     */
    request.setDateCreated(new DateParam(warningLog.getStartDate(), warningLog.getEndDate()));
    Date now = request.getDateCreated().endDate();
    request.setDate(new DateParam(DateUtil.dateToString(DateUtils.addDays(now, -3)), DateUtil.dateToString(now)));
    request.setPage(new PageRequest(pageNum, limit, new Order(Sort.Direction.DESC, "pubTime")));
    List<KV> kvList = new ArrayList<>();
    // 媒体类型
    String[] type = warningLog.getType();
    if (type != null && type.length > 0) {
        request.setType(type);
    }
    String[] sentimentLabel = warningLog.getSentimentLabel();
    // 情感类型
    if (sentimentLabel != null && sentimentLabel.length > 0) {
        kvList.add(new KV("nlp.sentiment.label", sentimentLabel));
    }
    request.setSearchKv(kvList);
    final Page page = newsService.findByMustShouldDateInType(request);
    return page;
}
Also used : PageImpl(org.springframework.data.domain.PageImpl) Order(com.topcom.cms.common.page.Order) BoolQueryRequest(com.topcom.cms.es.vo.BoolQueryRequest) Keyword(com.topcom.cms.es.vo.Keyword) ArrayList(java.util.ArrayList) Page(org.springframework.data.domain.Page) KV(com.topcom.cms.es.vo.KV) Date(java.util.Date) PageRequest(com.topcom.cms.common.page.PageRequest) DateParam(com.topcom.cms.common.page.DateParam)

Aggregations

Keyword (com.topcom.cms.es.vo.Keyword)5 KV (com.topcom.cms.es.vo.KV)4 DateParam (com.topcom.cms.common.page.DateParam)3 PageRequest (com.topcom.cms.common.page.PageRequest)3 BoolQueryRequest (com.topcom.cms.es.vo.BoolQueryRequest)3 Date (java.util.Date)3 Page (org.springframework.data.domain.Page)3 Order (com.topcom.cms.common.page.Order)2 ArrayList (java.util.ArrayList)2 PageImpl (org.springframework.data.domain.PageImpl)2 News (com.topcom.cms.data.domain.News)1 AggRequest (com.topcom.cms.es.vo.AggRequest)1 Accident (com.topcom.cms.mongo.domain.Accident)1 StaffSentiment (com.topcom.cms.yuqing.domain.StaffSentiment)1 WarningTask (com.topcom.cms.yuqing.domain.WarningTask)1 Map (java.util.Map)1