Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
suggest-task
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
田川
suggest-task
Commits
b1006535
Commit
b1006535
authored
Feb 08, 2022
by
xupeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正逻辑
parent
c331db5d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
23 deletions
+89
-23
SuggestTask.java
suggest-task/src/main/java/com/secoo/so/suggest/task/SuggestTask.java
+73
-15
StringUtils.java
suggest-task/src/main/java/com/secoo/so/suggest/util/StringUtils.java
+16
-8
No files found.
suggest-task/src/main/java/com/secoo/so/suggest/task/SuggestTask.java
View file @
b1006535
...
...
@@ -219,13 +219,26 @@ public class SuggestTask {
ObjectUtils
.
safeSleep
(
5000
);
}
// 将品牌词、品类词、人工干预词都写入es
Set
<
String
>
fillKeywordSet
=
new
HashSet
<>();
fillKeywordSet
.
addAll
(
brandMap
.
keySet
());
fillKeywordSet
.
addAll
(
categoryMap
.
keySet
());
fillKeywordSet
.
addAll
(
manualMap
.
keySet
());
for
(
String
fillKeyword
:
fillKeywordSet
)
{
if
(!
esSuggestKeywordMap
.
containsKey
(
fillKeyword
))
{
esSuggestKeywordMap
.
put
(
fillKeyword
,
buildDefaultEsSuggestKeywordInfo
(
fillKeyword
));
}
}
// 过滤词
List
<
EsSuggestKeywordInfo
>
suggestKeywordInfoList
=
new
ArrayList
<>();
int
processCount
=
0
;
int
totalCount
=
esSuggestKeywordMap
.
values
().
size
();
for
(
EsSuggestKeywordInfo
suggestKeywordInfo
:
esSuggestKeywordMap
.
values
())
{
// 不过滤的suggest词
,计算分值
写es
// 不过滤的suggest词写es
if
(!
isFilterSuggestKeyword
(
suggestKeywordInfo
))
{
// 转拼音
...
...
@@ -252,6 +265,46 @@ public class SuggestTask {
}
}
private
static
EsSuggestKeywordInfo
buildDefaultEsSuggestKeywordInfo
(
String
keyword
)
{
EsSuggestKeywordInfo
esSuggestKeywordInfo
=
new
EsSuggestKeywordInfo
();
esSuggestKeywordInfo
.
setKeyword
(
keyword
);
esSuggestKeywordInfo
.
setKeywordVersion
(
DateUtils
.
formatDate
(
startTime
,
"yyyy-MM-dd"
));
esSuggestKeywordInfo
.
setUpdateTime
(
startTime
);
esSuggestKeywordInfo
.
setYearCount
(
0
);
esSuggestKeywordInfo
.
setYearClickCount
(
0
);
esSuggestKeywordInfo
.
setYearCartCount
(
0
);
esSuggestKeywordInfo
.
setWeekCount
(
0L
);
esSuggestKeywordInfo
.
setWeekClickCount
(
0L
);
esSuggestKeywordInfo
.
setWeekCartCount
(
0L
);
SearchKeywordInfo
searchKeywordInfo
=
new
SearchKeywordInfo
();
searchKeywordInfo
.
setId
(
0L
);
searchKeywordInfo
.
setKeyword
(
keyword
);
searchKeywordInfo
.
setPrepareTags
(
null
);
searchKeywordInfo
.
setYearPv
(
0
);
searchKeywordInfo
.
setYearProductClickCount
(
0
);
searchKeywordInfo
.
setYearAddCartCount
(
0
);
searchKeywordInfo
.
setWeekPv
(
0L
);
searchKeywordInfo
.
setWeekProductClickCount
(
0L
);
searchKeywordInfo
.
setWeekAddCartCount
(
0L
);
searchKeywordInfo
.
setWeekUv
(
0L
);
searchKeywordInfo
.
setWeekProductClickUv
(
0L
);
searchKeywordInfo
.
setWeekAddCartUv
(
0L
);
searchKeywordInfo
.
setMonthPv
(
0L
);
searchKeywordInfo
.
setMonthProductClickCount
(
0L
);
searchKeywordInfo
.
setMonthAddCartCount
(
0L
);
searchKeywordInfo
.
setMonthUv
(
0L
);
searchKeywordInfo
.
setMonthProductClickUv
(
0L
);
searchKeywordInfo
.
setMonthAddCartUv
(
0L
);
searchKeywordInfo
.
setPDay
(
DateUtils
.
formatDate
(
startTime
,
"yyyy-MM-dd"
));
// 计算suggestKeyword权重等属性
processEsSuggestKeywordInfo
(
esSuggestKeywordInfo
,
searchKeywordInfo
);
return
esSuggestKeywordInfo
;
}
/**
* 处理搜索词
*/
...
...
@@ -278,13 +331,6 @@ public class SuggestTask {
suggestKeywordInfo
.
setKeywordVersion
(
searchKeywordInfo
.
getPDay
());
suggestKeywordInfo
.
setUpdateTime
(
startTime
);
suggestKeywordInfo
.
setIsBrand
(
brandMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsCategory
(
categoryMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsSensitive
(
sensitiveMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsEuropeWord
(
europeWordMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsManual
(
manualMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setManualValue
(
suggestKeywordInfo
.
getIsManual
()
?
manualMap
.
get
(
keyword
)
:
0
);
esSuggestKeywordMap
.
put
(
keyword
,
suggestKeywordInfo
);
}
else
{
suggestKeywordInfo
.
setYearCount
(
suggestKeywordInfo
.
getYearCount
()
+
searchKeywordInfo
.
getYearPv
());
...
...
@@ -293,6 +339,9 @@ public class SuggestTask {
suggestKeywordInfo
.
setWeekCount
(
suggestKeywordInfo
.
getWeekCount
()
+
searchKeywordInfo
.
getWeekPv
());
suggestKeywordInfo
.
setWeekClickCount
(
suggestKeywordInfo
.
getWeekClickCount
()
+
searchKeywordInfo
.
getWeekProductClickCount
());
suggestKeywordInfo
.
setWeekCartCount
(
suggestKeywordInfo
.
getWeekCartCount
()
+
searchKeywordInfo
.
getWeekAddCartCount
());
if
(
StringUtils
.
isBlank
(
suggestKeywordInfo
.
getSuggestTags
())
&&
"null"
.
equalsIgnoreCase
(
suggestKeywordInfo
.
getSuggestTags
()))
{
suggestKeywordInfo
.
setSuggestTags
(
suggestKeywordInfo
.
getSuggestTags
());
}
}
// 计算suggestKeyword权重等属性
...
...
@@ -409,14 +458,14 @@ public class SuggestTask {
return
true
;
}
// 判断是否是热搜词 一年内搜索次数大于50或者一周内搜索次数大于5
if
(
isHotSearchWord
(
suggestKeywordInfo
))
{
// 搜索次数比较多 转化率或者点击率较高的 不过滤
return
!
isHighCartRatio
(
suggestKeywordInfo
);
}
else
{
// 搜索次数不多 但是转化率很高的 或者有加购 不过滤
return
!
isHighClickRatio
(
suggestKeywordInfo
);
if
(
isHotSearchWord
(
suggestKeywordInfo
)
// 判断是否是热搜词 一年内搜索次数大于50或者一周内搜索次数大于5
||
(
suggestKeywordInfo
.
getYearCount
()
>
5
&&
isHighCartRatio
(
suggestKeywordInfo
))
// 搜索次数比较多 转化率或者点击率较高的 不过滤
||
isHighClickRatio
(
suggestKeywordInfo
))
{
// 搜索次数不多 但是转化率很高的 或者有加购 不过滤
return
false
;
}
return
true
;
}
private
static
void
cleanBeforeSaveToEs
(
EsSuggestKeywordInfo
suggestKeywordInfo
)
{
...
...
@@ -450,6 +499,15 @@ public class SuggestTask {
private
static
void
processEsSuggestKeywordInfo
(
EsSuggestKeywordInfo
suggestKeywordInfo
,
SearchKeywordInfo
searchKeywordInfo
)
{
String
keyword
=
suggestKeywordInfo
.
getKeyword
();
suggestKeywordInfo
.
setIsBrand
(
brandMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsCategory
(
categoryMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsSensitive
(
sensitiveMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsEuropeWord
(
europeWordMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setIsManual
(
manualMap
.
containsKey
(
keyword
));
suggestKeywordInfo
.
setManualValue
(
suggestKeywordInfo
.
getIsManual
()
?
manualMap
.
get
(
keyword
)
:
0
);
// 年点击加购率
suggestKeywordInfo
.
setYearClickRatio
(
CalculateUtils
.
calculateRatio
(
suggestKeywordInfo
.
getYearClickCount
(),
suggestKeywordInfo
.
getYearCount
()));
suggestKeywordInfo
.
setYearCartRatio
(
CalculateUtils
.
calculateRatio
(
suggestKeywordInfo
.
getYearCartCount
(),
suggestKeywordInfo
.
getYearCount
()));
...
...
suggest-task/src/main/java/com/secoo/so/suggest/util/StringUtils.java
View file @
b1006535
...
...
@@ -1935,21 +1935,29 @@ public abstract class StringUtils {
StringBuilder
buf
=
new
StringBuilder
();
if
(
StringUtils
.
isNotBlank
(
str
))
{
for
(
int
i
=
0
;
i
<
str
.
length
();
i
++)
{
char
ch
=
str
.
charAt
(
i
);
if
(
ch
==
12288
)
{
// 全角空格
ch
=
32
;
// 半角空格
}
else
{
ch
-=
65248
;
// 全角半角转换间隔
}
char
ch
=
str
.
charAt
(
i
);
String
chStr
=
String
.
valueOf
(
ch
);
if
(
ChCharToEnMapping
.
containsKey
(
chStr
))
{
// 中文字符转英文字符
buf
.
append
(
ChCharToEnMapping
.
get
(
chStr
));
}
else
if
(
ch
>=
32
&&
ch
<=
126
)
{
buf
.
append
(
chStr
);
}
else
if
(
ch
==
12288
)
{
// 全角空格
ch
=
32
;
buf
.
append
(
ch
);
// 半角空格
}
else
{
buf
.
append
(
str
.
charAt
(
i
));
ch
-=
65248
;
// 全角半角转换间隔
String
fixChStr
=
String
.
valueOf
(
ch
);
if
(
ChCharToEnMapping
.
containsKey
(
fixChStr
))
{
// 中文字符转英文字符
buf
.
append
(
ChCharToEnMapping
.
get
(
fixChStr
));
}
else
if
(
ch
>=
32
&&
ch
<=
126
)
{
buf
.
append
(
fixChStr
);
}
else
{
buf
.
append
(
chStr
);
}
}
}
}
...
...
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