Commit b1006535 by xupeng

修正逻辑

parent c331db5d
...@@ -219,13 +219,26 @@ public class SuggestTask { ...@@ -219,13 +219,26 @@ public class SuggestTask {
ObjectUtils.safeSleep(5000); 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<>(); List<EsSuggestKeywordInfo> suggestKeywordInfoList = new ArrayList<>();
int processCount = 0; int processCount = 0;
int totalCount = esSuggestKeywordMap.values().size(); int totalCount = esSuggestKeywordMap.values().size();
for (EsSuggestKeywordInfo suggestKeywordInfo : esSuggestKeywordMap.values()) { for (EsSuggestKeywordInfo suggestKeywordInfo : esSuggestKeywordMap.values()) {
// 不过滤的suggest词,计算分值写es // 不过滤的suggest词写es
if (!isFilterSuggestKeyword(suggestKeywordInfo)) { if (!isFilterSuggestKeyword(suggestKeywordInfo)) {
// 转拼音 // 转拼音
...@@ -252,6 +265,46 @@ public class SuggestTask { ...@@ -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 { ...@@ -278,13 +331,6 @@ public class SuggestTask {
suggestKeywordInfo.setKeywordVersion(searchKeywordInfo.getPDay()); suggestKeywordInfo.setKeywordVersion(searchKeywordInfo.getPDay());
suggestKeywordInfo.setUpdateTime(startTime); 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); esSuggestKeywordMap.put(keyword, suggestKeywordInfo);
} else { } else {
suggestKeywordInfo.setYearCount(suggestKeywordInfo.getYearCount() + searchKeywordInfo.getYearPv()); suggestKeywordInfo.setYearCount(suggestKeywordInfo.getYearCount() + searchKeywordInfo.getYearPv());
...@@ -293,6 +339,9 @@ public class SuggestTask { ...@@ -293,6 +339,9 @@ public class SuggestTask {
suggestKeywordInfo.setWeekCount(suggestKeywordInfo.getWeekCount() + searchKeywordInfo.getWeekPv()); suggestKeywordInfo.setWeekCount(suggestKeywordInfo.getWeekCount() + searchKeywordInfo.getWeekPv());
suggestKeywordInfo.setWeekClickCount(suggestKeywordInfo.getWeekClickCount() + searchKeywordInfo.getWeekProductClickCount()); suggestKeywordInfo.setWeekClickCount(suggestKeywordInfo.getWeekClickCount() + searchKeywordInfo.getWeekProductClickCount());
suggestKeywordInfo.setWeekCartCount(suggestKeywordInfo.getWeekCartCount() + searchKeywordInfo.getWeekAddCartCount()); suggestKeywordInfo.setWeekCartCount(suggestKeywordInfo.getWeekCartCount() + searchKeywordInfo.getWeekAddCartCount());
if (StringUtils.isBlank(suggestKeywordInfo.getSuggestTags()) && "null".equalsIgnoreCase(suggestKeywordInfo.getSuggestTags())) {
suggestKeywordInfo.setSuggestTags(suggestKeywordInfo.getSuggestTags());
}
} }
// 计算suggestKeyword权重等属性 // 计算suggestKeyword权重等属性
...@@ -409,14 +458,14 @@ public class SuggestTask { ...@@ -409,14 +458,14 @@ public class SuggestTask {
return true; return true;
} }
// 判断是否是热搜词 一年内搜索次数大于50或者一周内搜索次数大于5
if (isHotSearchWord(suggestKeywordInfo)) { if (isHotSearchWord(suggestKeywordInfo) // 判断是否是热搜词 一年内搜索次数大于50或者一周内搜索次数大于5
// 搜索次数比较多 转化率或者点击率较高的 不过滤 || (suggestKeywordInfo.getYearCount() > 5 && isHighCartRatio(suggestKeywordInfo)) // 搜索次数比较多 转化率或者点击率较高的 不过滤
return !isHighCartRatio(suggestKeywordInfo); || isHighClickRatio(suggestKeywordInfo)) { // 搜索次数不多 但是转化率很高的 或者有加购 不过滤
} else { return false;
// 搜索次数不多 但是转化率很高的 或者有加购 不过滤
return !isHighClickRatio(suggestKeywordInfo);
} }
return true;
} }
private static void cleanBeforeSaveToEs(EsSuggestKeywordInfo suggestKeywordInfo) { private static void cleanBeforeSaveToEs(EsSuggestKeywordInfo suggestKeywordInfo) {
...@@ -450,6 +499,15 @@ public class SuggestTask { ...@@ -450,6 +499,15 @@ public class SuggestTask {
private static void processEsSuggestKeywordInfo(EsSuggestKeywordInfo suggestKeywordInfo, SearchKeywordInfo searchKeywordInfo) { 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.setYearClickRatio(CalculateUtils.calculateRatio(suggestKeywordInfo.getYearClickCount(), suggestKeywordInfo.getYearCount()));
suggestKeywordInfo.setYearCartRatio(CalculateUtils.calculateRatio(suggestKeywordInfo.getYearCartCount(), suggestKeywordInfo.getYearCount())); suggestKeywordInfo.setYearCartRatio(CalculateUtils.calculateRatio(suggestKeywordInfo.getYearCartCount(), suggestKeywordInfo.getYearCount()));
......
...@@ -1935,21 +1935,29 @@ public abstract class StringUtils { ...@@ -1935,21 +1935,29 @@ public abstract class StringUtils {
StringBuilder buf = new StringBuilder(); StringBuilder buf = new StringBuilder();
if (StringUtils.isNotBlank(str)) { if (StringUtils.isNotBlank(str)) {
for (int i = 0; i < str.length(); i++) { 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); String chStr = String.valueOf(ch);
if (ChCharToEnMapping.containsKey(chStr)) { // 中文字符转英文字符 if (ChCharToEnMapping.containsKey(chStr)) { // 中文字符转英文字符
buf.append(ChCharToEnMapping.get(chStr)); buf.append(ChCharToEnMapping.get(chStr));
} else if (ch >= 32 && ch <= 126) { } else if (ch >= 32 && ch <= 126) {
buf.append(chStr); buf.append(chStr);
} else if (ch == 12288) { // 全角空格
ch = 32;
buf.append(ch); // 半角空格
} else { } 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);
}
} }
} }
} }
......
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