Commit 88c5fad4 by shenjunjie

调整brandkbs_cache_maps.key查询值

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