Commit e37fd833 by shenjunjie

Merge branch 'feature' into 'dev'

调整brandkbs_cache_maps.key查询值

See merge request !82
parents 38564d67 88c5fad4
...@@ -98,7 +98,7 @@ public class EsQueryTools { ...@@ -98,7 +98,7 @@ public class EsQueryTools {
public static BoolQueryBuilder assembleCacheMapsQuery(String projectId, String linkedGroupId, String contendId, List<String> mediaTypes) { public static BoolQueryBuilder assembleCacheMapsQuery(String projectId, String linkedGroupId, String contendId, List<String> mediaTypes) {
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
// must key // must key
nestedBoolQueryBuilder.must(cacheMapsNestedQuery(QueryBuilders.termQuery("brandkbs_cache_maps.key.keyword", concat(projectId, linkedGroupId, contendId)))); nestedBoolQueryBuilder.must(cacheMapsNestedQuery(QueryBuilders.termQuery("brandkbs_cache_maps.key.keyword", concat(projectId, contendId))));
// mediaType // mediaType
if (CollectionUtils.isNotEmpty(mediaTypes)) { if (CollectionUtils.isNotEmpty(mediaTypes)) {
BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery();
...@@ -188,9 +188,16 @@ public class EsQueryTools { ...@@ -188,9 +188,16 @@ public class EsQueryTools {
} }
public static void assembleContendsQuery(BoolQueryBuilder query, Collection<String> contends) { public static void assembleContendsQuery(BoolQueryBuilder query, Collection<String> contends) {
if (CollectionUtils.isEmpty(contends)) {
return;
}
for (String contendId : contends) {
query.should(cacheMapsNestedQuery(QueryBuilders.termQuery("brandkbs_cache_maps.contend_id.keyword", contendId)));
}
}
public static void assembleContendsQuery4Channel(BoolQueryBuilder query, Collection<String> contends) {
BoolQueryBuilder contendQuery = QueryBuilders.boolQuery(); BoolQueryBuilder contendQuery = QueryBuilders.boolQuery();
// 主品牌一定参与
// contendQuery.should(QueryBuilders.termQuery("contend_id.keyword", "0"));
if (CollectionUtils.isEmpty(contends)) { if (CollectionUtils.isEmpty(contends)) {
return; return;
} }
......
...@@ -1407,7 +1407,7 @@ public class ChannelServiceImpl implements ChannelService { ...@@ -1407,7 +1407,7 @@ public class ChannelServiceImpl implements ChannelService {
query.must(QueryBuilders.termQuery("project_id.keyword", projectId)); query.must(QueryBuilders.termQuery("project_id.keyword", projectId));
// 添加contends集合 查询 // 添加contends集合 查询
if (null != contendIds) { if (null != contendIds) {
EsQueryTools.assembleContendsQuery(query, contendIds); EsQueryTools.assembleContendsQuery4Channel(query, contendIds);
} }
// 添加渠道限制 // 添加渠道限制
if (null != channelId) { if (null != channelId) {
......
...@@ -3,7 +3,6 @@ package com.zhiwei.brandkbs2.service.impl; ...@@ -3,7 +3,6 @@ package com.zhiwei.brandkbs2.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.common.RedisKeyPrefix; import com.zhiwei.brandkbs2.common.RedisKeyPrefix;
import com.zhiwei.brandkbs2.config.Constant; import com.zhiwei.brandkbs2.config.Constant;
import com.zhiwei.brandkbs2.dao.ChannelDao; import com.zhiwei.brandkbs2.dao.ChannelDao;
...@@ -240,8 +239,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -240,8 +239,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
String platform = baseMap.getPlatform(); String platform = baseMap.getPlatform();
String source = baseMap.getSource(); String source = baseMap.getSource();
String title = baseMap.getTitle(); String title = baseMap.getTitle();
keyBuilder4.append(platform).append("-").append(source).append("/r/n"); keyBuilder4.append(platform).append("-").append(source).append("\r\n");
keyBuilder4.append(i + 1).append("、").append(title).append("/r/n"); keyBuilder4.append(i + 1).append("、").append(title).append("\r\n");
} }
if (datas.size() > 2) { if (datas.size() > 2) {
key4 = keyBuilder4.append("...").toString(); key4 = keyBuilder4.append("...").toString();
...@@ -276,8 +275,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -276,8 +275,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
String platform = baseMap.getPlatform(); String platform = baseMap.getPlatform();
String source = baseMap.getSource(); String source = baseMap.getSource();
String title = baseMap.getTitle(); String title = baseMap.getTitle();
keyBuilder4.append(platform).append("-").append(source).append("/r/n"); keyBuilder4.append(platform).append("-").append(source).append("\r\n");
keyBuilder4.append(i + 1).append("、").append(title).append("/r/n"); keyBuilder4.append(i + 1).append("、").append(title).append("\r\n");
} }
if (datas.size() > 2) { if (datas.size() > 2) {
key4 = keyBuilder4.append("...").toString(); key4 = keyBuilder4.append("...").toString();
...@@ -305,7 +304,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -305,7 +304,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
out: out:
for (List<Event> value : eventMap.values()) { for (List<Event> value : eventMap.values()) {
for (Event event : value) { for (Event event : value) {
keyBuilder4.append(event.getTitle()).append("/r/n"); keyBuilder4.append(event.getTitle()).append("\r\n");
if (--limit == 0) { if (--limit == 0) {
break out; break out;
} }
...@@ -359,8 +358,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -359,8 +358,8 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
BrandkbsHotTopWarn.HotTop hotTop = datas.get(i); BrandkbsHotTopWarn.HotTop hotTop = datas.get(i);
String topName = hotTop.getTopName() + "榜"; String topName = hotTop.getTopName() + "榜";
String title = hotTop.getTitle(); String title = hotTop.getTitle();
keyBuilder4.append(topName).append("/r/n"); keyBuilder4.append(topName).append("\r\n");
keyBuilder4.append(i + 1).append("、").append(title).append("/r/n"); keyBuilder4.append(i + 1).append("、").append(title).append("\r\n");
} }
if (datas.size() > 2) { if (datas.size() > 2) {
key4 = keyBuilder4.append("...").toString(); key4 = keyBuilder4.append("...").toString();
...@@ -384,7 +383,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -384,7 +383,7 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
BrandkbsNewCaseWarn.NewCase newCase = datas.get(i); BrandkbsNewCaseWarn.NewCase newCase = datas.get(i);
String title = newCase.getTitle(); String title = newCase.getTitle();
keyBuilder4.append(title).append("/r/n"); keyBuilder4.append(title).append("\r\n");
} }
if (datas.size() > 2) { if (datas.size() > 2) {
key4 = keyBuilder4.append("...").toString(); key4 = keyBuilder4.append("...").toString();
...@@ -564,25 +563,29 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -564,25 +563,29 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
// 本品舆情+竞品舆情 // 本品舆情+竞品舆情
BoolQueryBuilder sourceBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder sourceBuilder = QueryBuilders.boolQuery();
if (CollectionUtils.isNotEmpty(config.getMarkerTags())) { if (CollectionUtils.isNotEmpty(config.getMarkerTags())) {
sourceBuilder.should(QueryBuilders.termQuery("brandkbs_mark_cache_maps.name.keyword", config.getMarkerTags())); config.getMarkerTags().forEach(tagName -> sourceBuilder.should(QueryBuilders.termQuery("brandkbs_mark_cache_maps.name.keyword", tagName)));
} }
if (CollectionUtils.isNotEmpty(config.getContends())) { if (CollectionUtils.isNotEmpty(config.getContends())) {
EsQueryTools.assembleContendsQuery(sourceBuilder, config.getContends()); EsQueryTools.assembleContendsQuery(sourceBuilder, config.getContends());
} }
postFilter.must(sourceBuilder); postFilter.must(sourceBuilder);
// 关键词命中 // postFilter.must(EsQueryTools.assembleNormalKeywordQuery(config.getKeyword(), new String[]{GenericAttribute.ES_IND_FULL_TEXT}));
postFilter.must(EsQueryTools.assembleNormalKeywordQuery(config.getKeyword(), new String[]{GenericAttribute.ES_IND_FULL_TEXT}));
helper.setPostFilter(postFilter); helper.setPostFilter(postFilter);
SearchHits searchHits = esClientDao.searchHits(helper); SearchHits searchHits = esClientDao.searchHits(helper);
log.info("获取舆情动态预警-es搜索到数据:{}条,剩余关键词筛选未进行,project:{}", searchHits.getHits().length, project.getProjectName());
List<BaseMap> datas = Arrays.stream(searchHits.getHits()).map(hit -> { List<BaseMap> datas = Arrays.stream(searchHits.getHits()).map(hit -> {
Map<String, Object> sourceMap = hit.getSourceAsMap(); Map<String, Object> sourceMap = hit.getSourceAsMap();
BaseMap baseMap = Tools.getBaseFromEsMap(sourceMap); BaseMap baseMap = Tools.getBaseFromEsMap(sourceMap);
// 关键词命中
if (!Tools.isContains(config.getKeyword(), baseMap.getTitle() + baseMap.getContent())) {
return null;
}
JSONObject hitMap = Tools.getBrandkbsHitMapWithProjectId(sourceMap, projectId); JSONObject hitMap = Tools.getBrandkbsHitMapWithProjectId(sourceMap, projectId);
if (!hitMap.isEmpty() && !Constant.PRIMARY_CONTEND_ID.equals(hitMap.getString("contend_id"))) { if (!hitMap.isEmpty() && !Constant.PRIMARY_CONTEND_ID.equals(hitMap.getString("contend_id"))) {
baseMap.setBrandName(projectService.getProjectByContendId(projectId, hitMap.getString("contend_id")).getBrandName()); baseMap.setBrandName(projectService.getProjectByContendId(projectId, hitMap.getString("contend_id")).getBrandName());
} }
return baseMap; return baseMap;
}).collect(Collectors.toList()); }).filter(Objects::nonNull).collect(Collectors.toList());
// 开启去重 // 开启去重
if (Boolean.TRUE.equals(config.getDuplicate())) { if (Boolean.TRUE.equals(config.getDuplicate())) {
datas = duplicateBaseMapList(datas); datas = duplicateBaseMapList(datas);
...@@ -619,12 +622,13 @@ public class ProjectWarnServiceImpl implements ProjectWarnService { ...@@ -619,12 +622,13 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
// 本品舆情 // 本品舆情
BoolQueryBuilder sourceBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder sourceBuilder = QueryBuilders.boolQuery();
if (CollectionUtils.isNotEmpty(config.getMarkerTags())) { if (CollectionUtils.isNotEmpty(config.getMarkerTags())) {
sourceBuilder.should(QueryBuilders.termQuery("brandkbs_mark_cache_maps.name.keyword", config.getMarkerTags())); config.getMarkerTags().forEach(tagName -> sourceBuilder.should(QueryBuilders.termQuery("brandkbs_mark_cache_maps.name.keyword", tagName)));
} }
postFilter.must(sourceBuilder); postFilter.must(sourceBuilder);
helper.setPostFilter(postFilter); helper.setPostFilter(postFilter);
// 搜索结果 // 搜索结果
SearchHits searchHits = esClientDao.searchHits(helper); SearchHits searchHits = esClientDao.searchHits(helper);
log.info("获取渠道参与预警-es搜索到数据:{}条,剩余渠道指数筛选未进行,project:{}", searchHits.getHits().length, project.getProjectName());
List<BaseMap> datas = Arrays.stream(searchHits.getHits()).map(hit -> Tools.getBaseFromEsMap(hit.getSourceAsMap())).collect(Collectors.toList()); List<BaseMap> datas = Arrays.stream(searchHits.getHits()).map(hit -> Tools.getBaseFromEsMap(hit.getSourceAsMap())).collect(Collectors.toList());
// 开启去重 // 开启去重
if (Boolean.TRUE.equals(config.getDuplicate())) { if (Boolean.TRUE.equals(config.getDuplicate())) {
......
...@@ -852,6 +852,9 @@ public class Tools { ...@@ -852,6 +852,9 @@ public class Tools {
} }
public static boolean isContains(String keyword, String content) { public static boolean isContains(String keyword, String content) {
if (null == keyword) {
return true;
}
return isContains(Arrays.asList(keyword.split("\\|")), content); return isContains(Arrays.asList(keyword.split("\\|")), content);
} }
......
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