Commit 563923c7 by shenjunjie

Merge branch 'feature' into 'dev'

Feature

See merge request !67
parents 269a143b cee7d4fa
...@@ -218,7 +218,7 @@ public class EventDaoImpl extends BaseMongoDaoImpl<Event> implements EventDao { ...@@ -218,7 +218,7 @@ public class EventDaoImpl extends BaseMongoDaoImpl<Event> implements EventDao {
Calendar date = Calendar.getInstance(); Calendar date = Calendar.getInstance();
int year = date.get(Calendar.YEAR); int year = date.get(Calendar.YEAR);
for (int i = 0; i < years; i++) { for (int i = 0; i < years; i++) {
res.add(COLLECTION_PREFIX + (year - i)); res.add(COLLECTION_PREFIX + "_" + (year - i));
} }
return res; return res;
} }
......
...@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture; ...@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture;
@Component("eventDataDao") @Component("eventDataDao")
public class EventDataDaoImpl extends BaseMongoDaoImpl<EventData> implements EventDataDao { public class EventDataDaoImpl extends BaseMongoDaoImpl<EventData> implements EventDataDao {
protected static final String COLLECTION_PREFIX = "brandkbs_event_data_"; protected static final String COLLECTION_PREFIX = "brandkbs_event_data";
private static final String TIME_PATTERN = "yyyy"; private static final String TIME_PATTERN = "yyyy";
public EventDataDaoImpl() { public EventDataDaoImpl() {
......
...@@ -93,6 +93,7 @@ public class EventDataServiceImpl implements EventDataService { ...@@ -93,6 +93,7 @@ public class EventDataServiceImpl implements EventDataService {
private void updateEventData(Event event, List<EventData> eventDataList) { private void updateEventData(Event event, List<EventData> eventDataList) {
// 根据配置筛选目标数据 // 根据配置筛选目标数据
eventDataList = filterEventData(event, eventDataList); eventDataList = filterEventData(event, eventDataList);
log.info("analysisEvent-eventId:{},关键词筛选后剩余:{}条", event.getId(), eventDataList.size());
// 删除历史数据 // 删除历史数据
deleteEventRelated(event); deleteEventRelated(event);
// 数据入库 // 数据入库
...@@ -107,7 +108,7 @@ public class EventDataServiceImpl implements EventDataService { ...@@ -107,7 +108,7 @@ public class EventDataServiceImpl implements EventDataService {
String keyword = event.getKeyword(); String keyword = event.getKeyword();
for (EventData data : eventDataList) { for (EventData data : eventDataList) {
// 关键词筛选 // 关键词筛选
if (Tools.isContains(Arrays.asList(keyword.split(keyword.contains(",") ? "," : "\\|")), (data.getTitle() + data.getContent()))) { if (Tools.isContains(keyword, (data.getTitle() + data.getContent()))) {
hitList.add(data); hitList.add(data);
} }
} }
......
...@@ -38,7 +38,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -38,7 +38,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
warnCriteriaAdd(res, "contends", nameList, idList); warnCriteriaAdd(res, "contends", nameList, idList);
warnCriteriaAdd(res, "keyword", null); warnCriteriaAdd(res, "keyword", null);
warnCriteriaAdd(res, "duplicate", Arrays.asList("去重", "不去重"), Arrays.asList(true, false)); warnCriteriaAdd(res, "duplicate", Arrays.asList("去重", "不去重"), Arrays.asList(true, false));
warnCriteriaAdd(res, "pushInterval", Arrays.asList("10", "30min", "60min"), Arrays.asList(10 * ONE_MINUTE, 30 * ONE_MINUTE, 60 * ONE_MINUTE)); warnCriteriaAdd(res, "pushInterval", Arrays.asList("10min", "30min", "60min"), Arrays.asList(10 * ONE_MINUTE, 30 * ONE_MINUTE, 60 * ONE_MINUTE));
break; break;
case "渠道参与": case "渠道参与":
warnCriteriaAdd(res, "friendlyChannel", Arrays.asList("友好渠道", "敏感渠道", "自定义渠道"), Arrays.asList(true, false, null)); warnCriteriaAdd(res, "friendlyChannel", Arrays.asList("友好渠道", "敏感渠道", "自定义渠道"), Arrays.asList(true, false, null));
...@@ -54,31 +54,31 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -54,31 +54,31 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
warnCriteriaAdd(res, "primary", Arrays.asList("原创", "转发"), Arrays.asList(false, true), "说明:仅对微博平台数据生效"); warnCriteriaAdd(res, "primary", Arrays.asList("原创", "转发"), Arrays.asList(false, true), "说明:仅对微博平台数据生效");
warnCriteriaAddSimple(res, "markerTags", Arrays.asList("正面", "中性", "负面")); warnCriteriaAddSimple(res, "markerTags", Arrays.asList("正面", "中性", "负面"));
warnCriteriaAdd(res, "duplicate", Arrays.asList("去重", "不去重"), Arrays.asList(true, false)); warnCriteriaAdd(res, "duplicate", Arrays.asList("去重", "不去重"), Arrays.asList(true, false));
warnCriteriaAdd(res, "pushInterval", Arrays.asList("实时", "30min", "60min", "180min"), Arrays.asList(null, 30 * ONE_MINUTE, 60 * ONE_MINUTE, 180 * ONE_MINUTE)); warnCriteriaAdd(res, "pushInterval", Arrays.asList("10min", "30min", "60min"), Arrays.asList(10 * ONE_MINUTE, 30 * ONE_MINUTE, 60 * ONE_MINUTE));
break; break;
case "热点事件": case "热点事件":
warnCriteriaAddSimple(res, "wonEvent", Arrays.asList("正面", "中性", "负面")); warnCriteriaAddSimple(res, "ownEvent", Arrays.asList("正面", "中性", "负面"));
List<JSONObject> brands2 = projectService.getBrands(projectId, false); List<JSONObject> brands2 = projectService.getBrands(projectId, false);
List<String> nameList2 = brands2.stream().map(json -> json.getString("brandName")).collect(Collectors.toList()); List<String> nameList2 = brands2.stream().map(json -> json.getString("brandName")).collect(Collectors.toList());
List<String> idList2 = brands2.stream().map(json -> json.getString("contendId")).collect(Collectors.toList()); List<String> idList2 = brands2.stream().map(json -> json.getString("contendId")).collect(Collectors.toList());
warnCriteriaAdd(res, "contendsEvent", nameList2, idList2); warnCriteriaAdd(res, "contendsEvent", nameList2, idList2);
warnCriteriaAddSimple(res, "zhiWeiEvent", Arrays.asList("社会", "互联网", "政务", "财经", "企业", "娱乐", "灾难", "违法犯罪", "国际", "体育", "谣言"), "说明:知微事见支持选择事件的领域"); warnCriteriaAddSimple(res, "zhiWeiEvent", Arrays.asList("社会", "互联网", "政务", "财经", "企业", "娱乐", "灾难", "违法犯罪", "国际", "体育", "谣言"), "说明:知微事见支持选择事件的领域");
warnCriteriaAdd(res, "eventTop", Arrays.asList("TOP5", "TOP10"), Arrays.asList(5, 10), "说明:按影响力选取;若事件数不足,以实际为准"); warnCriteriaAdd(res, "eventTop", Arrays.asList("TOP5", "TOP10"), Arrays.asList(5, 10), "说明:按影响力选取;若事件数不足,以实际为准");
warnCriteriaAdd(res, "timeCycles", Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"), Arrays.asList(1, 2, 3, 4, 5, 6, 7), "说明:系统推送时间为08:00"); warnCriteriaAdd(res, "timeCycles", Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"), Arrays.asList(2, 3, 4, 5, 6, 7, 1), "说明:系统推送时间为08" + ":00");
break; break;
case "上榜热搜": case "上榜热搜":
warnCriteriaAddSimple(res, "warnKeyword", null); warnCriteriaAddSimple(res, "warnKeyword", null);
warnCriteriaAddSimple(res, "filterKeyword", null); warnCriteriaAddSimple(res, "filterKeyword", null);
warnCriteriaAddSimple(res, "listType", Arrays.asList("微博热搜", "微博话题", "微博预热", "头条热搜", "抖音热搜", "知乎热搜", "B站热搜", "快手热榜")); warnCriteriaAddSimple(res, "listType", Arrays.asList("微博热搜", "微博话题", "微博预热", "头条热搜", "抖音热搜", "知乎热搜", "B站热搜", "快手热榜"));
List<Map<String, Object>> topList = new ArrayList<>(); List<Map<String, Object>> topNewHeight = new ArrayList<>();
for (int i : Arrays.asList(3, 5, 10, 20, 50)) { for (int i : Arrays.asList(3, 5, 10, 20, 50)) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("name", "前" + i); map.put("name", "前" + i);
map.put("id", i); map.put("id", i);
topList.add(map); topNewHeight.add(map);
} }
warnCriteriaAddSimple(res, "warnType", Arrays.asList("首次上榜", "排名新高", "掉榜和再次上榜", "导语(仅支持微博平台)")); res.put("topNewHeight", topNewHeight);
res.put("topList", topList); warnCriteriaAdd(res, "warnType", Arrays.asList("首次上榜", "排名新高", "掉榜和再次上榜", "导语(仅支持微博平台)"), Arrays.asList("firstTop", "newHeight", "topOnceAgain", "introduction"));
warnCriteriaAdd(res, "pushInterval", Collections.singletonList("5min"), Collections.singletonList(5 * ONE_MINUTE)); warnCriteriaAdd(res, "pushInterval", Collections.singletonList("5min"), Collections.singletonList(5 * ONE_MINUTE));
break; break;
case "案例上新": case "案例上新":
......
...@@ -851,6 +851,10 @@ public class Tools { ...@@ -851,6 +851,10 @@ public class Tools {
return dayList; return dayList;
} }
public static boolean isContains(String keyword, String content) {
return isContains(Arrays.asList(keyword.split("\\|")), content);
}
/** /**
* 是否包含关键字 * 是否包含关键字
* *
...@@ -859,20 +863,25 @@ public class Tools { ...@@ -859,20 +863,25 @@ public class Tools {
* @return 是否包含关键字 * @return 是否包含关键字
*/ */
public static boolean isContains(List<String> keywords, String content) { public static boolean isContains(List<String> keywords, String content) {
boolean contains = true; if (null == keywords || keywords.isEmpty()) {
if (null != keywords) { return false;
}
content = content.toLowerCase(); content = content.toLowerCase();
// 按空格分割必须全部命中 // 有一组命中即可
for (String keyword : keywords) { for (String keyword : keywords) {
boolean contains = true;
for (String word : keyword.split(" ")) { for (String word : keyword.split(" ")) {
if (!content.contains(word.toLowerCase())) { if (!content.contains(word.toLowerCase())) {
//一个不命中,直接返回false //一个不命中,跳转至下一组
return false; contains = false;
break;
} }
} }
if (contains) {
return true;
} }
} }
return contains; return false;
} }
public static JSONObject getBrandkbsHitMap(Map<String, Object> esMap, String hitKey) { public static JSONObject getBrandkbsHitMap(Map<String, Object> esMap, String hitKey) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment