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
c7da5513
Commit
c7da5513
authored
Jun 24, 2024
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'dev'
原发追溯-扩大原发追溯 See merge request
!537
parents
e6abc1ff
66a74941
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
89 additions
and
24 deletions
+89
-24
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
+6
-0
src/main/java/com/zhiwei/brandkbs2/pojo/dto/MarkSearchDTO.java
+6
-0
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
+7
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
+70
-24
No files found.
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
View file @
c7da5513
...
@@ -584,6 +584,12 @@ public class AppArticleController extends BaseController {
...
@@ -584,6 +584,12 @@ public class AppArticleController extends BaseController {
return
ResponseResult
.
success
(
markDataService
.
getWholeSearchArticleList
(
dto
));
return
ResponseResult
.
success
(
markDataService
.
getWholeSearchArticleList
(
dto
));
}
}
@ApiOperation
(
"原发溯源-扩大追溯范围"
)
@PostMapping
(
"/search-whole/origin/expand"
)
public
ResponseResult
expandOriginRange
(
@RequestBody
MarkSearchDTO
dto
)
{
return
ResponseResult
.
success
(
markDataService
.
expandOriginRange
(
dto
));
}
private
boolean
checkMTagIllegal
(
StringBuilder
mtag
)
{
private
boolean
checkMTagIllegal
(
StringBuilder
mtag
)
{
List
<
MarkerTag
>
hitTags
=
projectService
.
getProjectById
(
UserThreadLocal
.
getProjectId
()).
getHitTags
();
List
<
MarkerTag
>
hitTags
=
projectService
.
getProjectById
(
UserThreadLocal
.
getProjectId
()).
getHitTags
();
if
(!
Tools
.
isEmpty
(
hitTags
))
{
if
(!
Tools
.
isEmpty
(
hitTags
))
{
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/dto/MarkSearchDTO.java
View file @
c7da5513
...
@@ -142,6 +142,12 @@ public class MarkSearchDTO {
...
@@ -142,6 +142,12 @@ public class MarkSearchDTO {
private
String
keyword
;
private
String
keyword
;
/**
/**
* 多个关键字
*/
@ApiModelProperty
(
value
=
"多个关键字"
)
private
List
<
String
>
keywordList
;
/**
* 渠道关键词
* 渠道关键词
*/
*/
@ApiModelProperty
(
value
=
"渠道关键词"
)
@ApiModelProperty
(
value
=
"渠道关键词"
)
...
...
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
View file @
c7da5513
...
@@ -750,4 +750,11 @@ public interface MarkDataService {
...
@@ -750,4 +750,11 @@ public interface MarkDataService {
* @return
* @return
*/
*/
PageVO
<
JSONObject
>
getWholeSearchArticleList
(
MarkSearchDTO
dto
);
PageVO
<
JSONObject
>
getWholeSearchArticleList
(
MarkSearchDTO
dto
);
/**
* 原发溯源-扩大追溯范围
* @param dto
* @return
*/
List
<
String
>
expandOriginRange
(
MarkSearchDTO
dto
);
}
}
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
View file @
c7da5513
...
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
...
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.hankcs.hanlp.HanLP
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.base.category.ClassB
;
import
com.zhiwei.base.entity.subclass.mark.MarkInfo
;
import
com.zhiwei.base.entity.subclass.mark.MarkInfo
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
import
com.zhiwei.brandkbs2.auth.UserThreadLocal
;
...
@@ -653,7 +654,8 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -653,7 +654,8 @@ public class MarkDataServiceImpl implements MarkDataService {
contendOptional
.
ifPresent
(
contend
->
markSearchDTO
.
setLinkedGroupId
(
contend
.
getBrandLinkedGroupId
()));
contendOptional
.
ifPresent
(
contend
->
markSearchDTO
.
setLinkedGroupId
(
contend
.
getBrandLinkedGroupId
()));
}
}
// gid
// gid
String
gid
=
redisUtil
.
get
(
RedisUtil
.
getNonManualProjectMarkMaxGidKey
(
UserThreadLocal
.
getProjectId
(),
markSearchDTO
.
getPlanId
(),
UserThreadLocal
.
getUserId
()));
String
key
=
RedisUtil
.
getNonManualProjectMarkMaxGidKey
(
projectId
,
markSearchDTO
.
getPlanId
(),
UserThreadLocal
.
getUserId
());
String
gid
=
redisUtil
.
get
(
key
);
if
(
Objects
.
isNull
(
gid
))
{
if
(
Objects
.
isNull
(
gid
))
{
markSearchDTO
.
setGid
(-
1L
);
markSearchDTO
.
setGid
(-
1L
);
}
else
{
}
else
{
...
@@ -3551,6 +3553,34 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3551,6 +3553,34 @@ public class MarkDataServiceImpl implements MarkDataService {
return
null
;
return
null
;
}
}
@Override
public
List
<
String
>
expandOriginRange
(
MarkSearchDTO
dto
)
{
try
{
// 默认近一个月
dto
.
setEndTime
(
System
.
currentTimeMillis
());
dto
.
setStartTime
(
dto
.
getEndTime
()
-
Constant
.
ONE_MONTH
);
String
[]
indexes
=
esClientDao
.
getAllIndexes
(
dto
.
getStartTime
(),
dto
.
getEndTime
());
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
// nlp分词
String
keyword
=
HanLP
.
segment
(
Tools
.
filterSpecialCharacter
(
dto
.
getKeyword
())).
stream
().
map
(
s
->
s
.
word
).
distinct
().
collect
(
Collectors
.
joining
(
" "
));
query
.
must
(
EsQueryTools
.
assembleNormalKeywordQuery
(
keyword
,
new
String
[]{
GenericAttribute
.
ES_IND_FULL_TEXT
}));
// time
query
.
must
(
QueryBuilders
.
rangeQuery
(
GenericAttribute
.
ES_TIME
).
gte
(
dto
.
getStartTime
()).
lte
(
dto
.
getEndTime
()));
// 按score排序
FieldSortBuilder
sort
=
SortBuilders
.
fieldSort
(
"_score"
).
order
(
SortOrder
.
DESC
);
SearchHits
hits
=
esClientDao
.
searchHits
(
indexes
,
query
,
null
,
null
,
sort
,
0
,
1000
,
null
);
if
(
0
==
hits
.
getTotalHits
().
value
){
return
Collections
.
emptyList
();
}
// 取top5
return
Arrays
.
stream
(
hits
.
getHits
()).
map
(
hit
->
Tools
.
getBaseFromEsMap
(
hit
.
getSourceAsMap
()).
getTitle
())
.
filter
(
Objects:
:
nonNull
).
distinct
().
limit
(
5
).
collect
(
Collectors
.
toList
());
}
catch
(
Exception
e
){
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"原发溯源-扩大溯源范围异常expandOriginRange-"
,
e
);
}
return
Collections
.
emptyList
();
}
/**
/**
* 原发溯源大库es查询
* 原发溯源大库es查询
* @param dto
* @param dto
...
@@ -3559,32 +3589,48 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3559,32 +3589,48 @@ public class MarkDataServiceImpl implements MarkDataService {
private
BoolQueryBuilder
getAllIndexSearchOriginQuery
(
MarkSearchDTO
dto
)
{
private
BoolQueryBuilder
getAllIndexSearchOriginQuery
(
MarkSearchDTO
dto
)
{
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
// time
// time
dto
.
setEndTime
(
System
.
currentTimeMillis
());
if
(
Objects
.
isNull
(
dto
.
getStartTime
())
||
Objects
.
isNull
(
dto
.
getEndTime
()))
{
dto
.
setStartTime
(
dto
.
getEndTime
()
-
Constant
.
ONE_MONTH
);
dto
.
setEndTime
(
System
.
currentTimeMillis
());
dto
.
setStartTime
(
dto
.
getEndTime
()
-
Constant
.
ONE_MONTH
);
}
query
.
must
(
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
dto
.
getStartTime
()).
lte
(
dto
.
getEndTime
()));
query
.
must
(
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
dto
.
getStartTime
()).
lte
(
dto
.
getEndTime
()));
String
keyword
=
dto
.
getKeyword
();
// keyword
// 特殊符号、数字替换空格
String
[]
fieldSearch
=
new
String
[]{
GenericAttribute
.
ES_IND_FULL_TEXT
};
String
processedKeyword
=
Tools
.
canonicalKeyword
(
keyword
.
replaceAll
(
ORIGIN_SEARCH_PATTERN
,
" "
));
BoolQueryBuilder
keywordQuery
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
keywordQuery
=
QueryBuilders
.
boolQuery
();
// keyword条件一: 空格为且条件
if
(!
Tools
.
isEmpty
(
dto
.
getKeywordList
()))
{
if
(
StringUtils
.
isNotEmpty
(
processedKeyword
))
{
for
(
String
keyword
:
dto
.
getKeywordList
())
{
BoolQueryBuilder
keywordQuery1
=
QueryBuilders
.
boolQuery
();
keywordQuery
.
should
(
QueryBuilders
.
matchPhrasePrefixQuery
(
GenericAttribute
.
ES_IND_FULL_TEXT
,
keyword
));
String
[]
words
=
processedKeyword
.
split
(
" +"
);
// 关键词 数字符号替换后重组query
for
(
int
i
=
0
;
i
<
words
.
length
;
i
++)
{
keywordQuery
.
should
(
EsQueryTools
.
assembleNormalKeywordQuery
(
Tools
.
canonicalKeyword
(
keyword
.
replaceAll
(
ORIGIN_SEARCH_PATTERN
,
" "
)),
fieldSearch
));
BoolQueryBuilder
wordQuery
=
QueryBuilders
.
boolQuery
();
if
(
i
!=
words
.
length
-
1
)
{
keywordQuery1
.
must
(
wordQuery
.
must
(
QueryBuilders
.
matchPhraseQuery
(
GenericAttribute
.
ES_IND_FULL_TEXT
,
words
[
i
])));
}
else
{
keywordQuery1
.
must
(
wordQuery
.
must
(
QueryBuilders
.
matchPhrasePrefixQuery
(
GenericAttribute
.
ES_IND_FULL_TEXT
,
words
[
i
])));
}
}
}
keywordQuery
.
should
(
keywordQuery1
);
}
else
{
}
keywordQuery
.
should
(
QueryBuilders
.
matchPhrasePrefixQuery
(
GenericAttribute
.
ES_IND_FULL_TEXT
,
dto
.
getKeyword
()));
// keyword条件二
// 关键词 数字符号替换后重组query
BoolQueryBuilder
keywordQuery2
=
QueryBuilders
.
boolQuery
();
keywordQuery
.
should
(
EsQueryTools
.
assembleNormalKeywordQuery
(
Tools
.
canonicalKeyword
(
dto
.
getKeyword
().
replaceAll
(
ORIGIN_SEARCH_PATTERN
,
" "
)),
fieldSearch
));
keywordQuery2
.
must
(
QueryBuilders
.
matchPhrasePrefixQuery
(
GenericAttribute
.
ES_IND_FULL_TEXT
,
keyword
));
}
// 两个keyword条件满足一个即可
// String keyword = dto.getKeyword();
keywordQuery
.
should
(
keywordQuery2
).
minimumShouldMatch
(
1
);
// // 特殊符号、数字替换空格
// String processedKeyword = Tools.canonicalKeyword(keyword.replaceAll(ORIGIN_SEARCH_PATTERN, " "));
//// BoolQueryBuilder keywordQuery = QueryBuilders.boolQuery();
// // keyword条件一: 空格为且条件
// if (StringUtils.isNotEmpty(processedKeyword)) {
// BoolQueryBuilder keywordQuery1 = QueryBuilders.boolQuery();
// String[] words = processedKeyword.split(" +");
// for (int i = 0; i < words.length; i++) {
// BoolQueryBuilder wordQuery = QueryBuilders.boolQuery();
// if (i != words.length - 1) {
// keywordQuery1.must(wordQuery.must(QueryBuilders.matchPhraseQuery(GenericAttribute.ES_IND_FULL_TEXT, words[i])));
// } else {
// keywordQuery1.must(wordQuery.must(QueryBuilders.matchPhrasePrefixQuery(GenericAttribute.ES_IND_FULL_TEXT, words[i])));
// }
// }
// keywordQuery.should(keywordQuery1);
// }
// // keyword条件二
// BoolQueryBuilder keywordQuery2 = QueryBuilders.boolQuery();
// keywordQuery2.must(QueryBuilders.matchPhrasePrefixQuery(GenericAttribute.ES_IND_FULL_TEXT, keyword));
// // 两个keyword条件满足一个即可
// keywordQuery.should(keywordQuery2).minimumShouldMatch(1);
query
.
must
(
keywordQuery
);
query
.
must
(
keywordQuery
);
// platform
// platform
BoolQueryBuilder
platformQuery
=
EsQueryTools
.
assemblePlatformQuery
(
GlobalPojo
.
PLATFORMS
);
BoolQueryBuilder
platformQuery
=
EsQueryTools
.
assemblePlatformQuery
(
GlobalPojo
.
PLATFORMS
);
...
...
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