Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
brandkbs2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenjunjie
brandkbs2
Commits
4dc2ee57
Commit
4dc2ee57
authored
Apr 19, 2024
by
shenjunjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
舆情动态舆情-配置新增屏蔽关键词及屏蔽渠道
parent
f643ea87
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
150 deletions
+18
-150
src/main/java/com/zhiwei/brandkbs2/pojo/external/BrandkbsYuQingConfigNew.java
+10
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
+0
-8
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
+8
-142
No files found.
src/main/java/com/zhiwei/brandkbs2/pojo/external/BrandkbsYuQingConfigNew.java
View file @
4dc2ee57
...
@@ -19,6 +19,16 @@ public class BrandkbsYuQingConfigNew {
...
@@ -19,6 +19,16 @@ public class BrandkbsYuQingConfigNew {
private
String
channel
;
private
String
channel
;
/**
/**
* 屏蔽关键字命中
*/
private
String
noiseKeyword
;
/**
* 屏蔽自定义渠道
*/
private
String
noiseChannel
;
/**
* 行政级别
* 行政级别
*/
*/
private
List
<
String
>
politicsLevels
;
private
List
<
String
>
politicsLevels
;
...
...
src/main/java/com/zhiwei/brandkbs2/service/ProjectWarnService.java
View file @
4dc2ee57
...
@@ -23,14 +23,6 @@ public interface ProjectWarnService {
...
@@ -23,14 +23,6 @@ public interface ProjectWarnService {
ResponseResult
getProjectWarnCriteriaDefault
(
String
projectId
,
String
type
);
ResponseResult
getProjectWarnCriteriaDefault
(
String
projectId
,
String
type
);
/**
/**
* 获取舆情动态预警
* @param projectId
* @param brandkbsYuQingConfig
* @return
*/
ResponseResult
getYuqingWaring
(
String
projectId
,
BrandkbsYuQingConfig
brandkbsYuQingConfig
);
/**
* 获取舆情动态预警-新
* 获取舆情动态预警-新
* @param projectId
* @param projectId
* @param brandkbsYuQingConfigNew
* @param brandkbsYuQingConfigNew
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectWarnServiceImpl.java
View file @
4dc2ee57
...
@@ -302,89 +302,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -302,89 +302,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
}
}
@Deprecated
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Yuqing
(
BrandkbsYuQingConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
if
(
datas
.
isEmpty
())
{
return
null
;
}
int
firstCount
=
datas
.
size
();
// key1
String
key1
=
"【品见】舆情动态-"
+
project
.
getProjectName
();
// key2
// String key2Header = "全部";
String
key2Header
=
""
;
StringBuilder
mediaChannel
=
new
StringBuilder
();
List
<
String
>
politicsLevels
=
config
.
getPoliticsLevels
();
List
<
String
>
fields
=
config
.
getFields
();
if
(
Tools
.
isEmpty
(
politicsLevels
)){
key2Header
+=
"【全部级别】"
;
}
else
if
(
politicsLevels
.
contains
(
"全部"
)){
key2Header
+=
"【重点级别】"
;
}
else
{
politicsLevels
.
forEach
(
politicsLevel
->
mediaChannel
.
append
(
politicsLevel
).
append
(
"、"
));
}
if
(
Tools
.
isEmpty
(
fields
))
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
key2Header
+=
"【全部领域】,"
;
}
else
{
key2Header
+=
"【全部领域】"
;
}
}
else
if
(
fields
.
contains
(
"全部"
))
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
key2Header
+=
"【重点领域】,"
;
}
else
{
key2Header
+=
"【重点领域】"
;
}
}
else
{
fields
.
forEach
(
field
->
mediaChannel
.
append
(
field
).
append
(
"、"
));
}
if
(
0
!=
mediaChannel
.
length
())
{
if
(
0
!=
key2Header
.
length
())
{
key2Header
+=
"、"
;
}
// 替换“全部” 并去掉末位的、
key2Header
+=
mediaChannel
.
deleteCharAt
(
mediaChannel
.
length
()
-
1
).
toString
();
key2Header
+=
"媒体,"
;
}
StringBuilder
dataType
=
new
StringBuilder
();
config
.
getMarkerTags
().
forEach
(
emotion
->
dataType
.
append
(
emotion
).
append
(
" "
));
dataType
.
append
(
"(本品)"
);
// 如果有竞品
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getContends
()))
{
dataType
.
append
(
","
);
config
.
getContends
().
forEach
(
contend
->
dataType
.
append
(
projectService
.
getProjectByContendId
(
project
.
getId
(),
contend
).
getBrandName
()).
append
(
" "
));
dataType
.
append
(
"(竞品)"
);
}
String
key2
=
key2Header
+
dataType
;
// key3
String
key3
=
Constant
.
SPEC_MINUTE_FORMAT
.
format
(
start
)
+
" ~ "
+
Constant
.
SPEC_MINUTE_FORMAT
.
format
(
end
);
// key4
String
key4
;
StringBuilder
keyBuilder4
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
Math
.
min
(
datas
.
size
(),
2
);
i
++)
{
BaseMap
baseMap
=
datas
.
get
(
i
);
String
platform
=
baseMap
.
getPlatform
();
String
source
=
baseMap
.
getSource
();
String
title
=
baseMap
.
getTitle
();
keyBuilder4
.
append
(
platform
).
append
(
"-"
).
append
(
source
).
append
(
"\r\n"
);
// 最后一条
if
(
datas
.
size
()
==
i
+
1
)
{
keyBuilder4
.
append
(
i
+
1
).
append
(
"、"
).
append
(
title
);
}
else
{
keyBuilder4
.
append
(
i
+
1
).
append
(
"、"
).
append
(
title
).
append
(
"\r\n"
);
}
}
if
(
datas
.
size
()
>
2
)
{
key4
=
keyBuilder4
.
append
(
"..."
).
toString
();
}
else
{
key4
=
keyBuilder4
.
toString
();
}
List
<
BaseMapCompound
>
collect
=
datas
.
stream
().
map
(
baseMap
->
BaseMapCompound
.
createFromBaseMap
(
baseMap
,
project
.
getId
())).
collect
(
Collectors
.
toList
());
return
new
BrandkbsWarnTemplate
(
firstCount
,
key1
,
key2
,
key3
,
key4
,
new
BrandkbsYuQingWarn
(
collect
));
}
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Channel
(
BrandkbsChannelConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
private
BrandkbsWarnTemplate
brandkbsWarnTemplate4Channel
(
BrandkbsChannelConfig
config
,
List
<
BaseMap
>
datas
,
long
start
,
long
end
,
AbstractProject
project
)
{
if
(
datas
.
isEmpty
())
{
if
(
datas
.
isEmpty
())
{
return
null
;
return
null
;
...
@@ -703,65 +620,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -703,65 +620,6 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
}
}
@Override
@Override
@Deprecated
public
ResponseResult
getYuqingWaring
(
String
projectId
,
BrandkbsYuQingConfig
config
)
{
Project
project
=
null
;
long
end
=
System
.
currentTimeMillis
();
long
start
=
end
-
config
.
getPushInterval
();
try
{
project
=
projectService
.
getProjectById
(
projectId
);
log
.
info
(
"获取舆情动态预警开始,project:{}"
,
project
.
getProjectName
());
EsClientDao
.
SearchHelper
helper
=
EsClientDao
.
createSearchHelper
();
// 发声渠道
BoolQueryBuilder
postFilter
=
EsQueryTools
.
assembleCacheMapsQueryWithProject
(
projectId
,
config
);
// 时间(标注时间)
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
"mtime"
).
gte
(
start
).
lt
(
end
));
// 文章类型
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getPrimary
())
&&
config
.
getPrimary
().
size
()
==
1
)
{
postFilter
.
must
(
EsQueryTools
.
assembleForwardQuery
(
config
.
getPrimary
().
get
(
0
)));
}
// 本品舆情+竞品舆情
BoolQueryBuilder
sourceBuilder
=
QueryBuilders
.
boolQuery
();
if
(
CollectionUtils
.
isNotEmpty
(
config
.
getMarkerTags
()))
{
config
.
getMarkerTags
().
forEach
(
tagName
->
sourceBuilder
.
should
(
QueryBuilders
.
termQuery
(
"brandkbs_mark_cache_maps.name.keyword"
,
tagName
)));
}
postFilter
.
must
(
sourceBuilder
);
EsQueryTools
.
assembleContendsQuery
(
postFilter
,
config
.
getContends
());
// 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
);
String
contendId
=
hitMap
.
getString
(
"contend_id"
);
if
(!
hitMap
.
isEmpty
()
&&
(
null
!=
config
.
getContends
()
&&
config
.
getContends
().
contains
(
contendId
)))
{
baseMap
.
setBrandName
(
projectService
.
getProjectByContendId
(
projectId
,
contendId
).
getBrandName
());
}
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
baseMap
.
subStringContentTop
();
return
baseMap
;
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
// 开启去重
if
(
Boolean
.
TRUE
.
equals
(
config
.
getDuplicate
()))
{
datas
=
duplicateBaseMapList
(
datas
);
}
log
.
info
(
"获取舆情动态预警结束,project:{}"
,
project
.
getProjectName
());
// 封装返回值
return
ResponseResult
.
success
(
brandkbsWarnTemplate4Yuqing
(
config
,
datas
,
start
,
end
,
project
));
}
catch
(
Exception
e
)
{
log
.
info
(
"获取舆情动态预警失败,project:{}"
,
project
.
getProjectName
(),
e
);
}
return
ResponseResult
.
failure
(
"获取舆情动态预警失败"
);
}
@Override
public
ResponseResult
getYuqingWaringNew
(
String
projectId
,
BrandkbsYuQingConfigNew
config
)
{
public
ResponseResult
getYuqingWaringNew
(
String
projectId
,
BrandkbsYuQingConfigNew
config
)
{
Project
project
;
Project
project
;
long
end
=
System
.
currentTimeMillis
();
long
end
=
System
.
currentTimeMillis
();
...
@@ -788,6 +646,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -788,6 +646,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
if
(
StringUtils
.
isNotBlank
(
config
.
getChannel
())){
if
(
StringUtils
.
isNotBlank
(
config
.
getChannel
())){
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getChannel
()));
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getChannel
()));
}
}
// 屏蔽渠道
if
(
StringUtils
.
isNotBlank
(
config
.
getNoiseChannel
())){
postFilter
.
mustNot
(
EsQueryTools
.
assembleSourceQuery
(
config
.
getNoiseChannel
()));
}
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
());
log
.
info
(
"获取新舆情动态预警-es搜索到数据:{}条,剩余关键词筛选未进行,project:{}"
,
searchHits
.
getHits
().
length
,
project
.
getProjectName
());
...
@@ -798,6 +660,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
...
@@ -798,6 +660,10 @@ public class ProjectWarnServiceImpl implements ProjectWarnService {
if
(!
Tools
.
isContains
(
config
.
getKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
if
(!
Tools
.
isContains
(
config
.
getKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
return
null
;
return
null
;
}
}
// 屏蔽关键词命中
if
(
Tools
.
isContains
(
config
.
getNoiseKeyword
(),
baseMap
.
getTitle
()
+
baseMap
.
getContent
()))
{
return
null
;
}
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
baseMap
.
setTitle
(
baseMap
.
getTitleNullOptionalContent
());
baseMap
.
subStringContentTop
();
baseMap
.
subStringContentTop
();
return
baseMap
;
return
baseMap
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment