Commit cee7d4fa by shenjunjie

事件关键词匹配bug修复

parent 6cb78150
......@@ -218,7 +218,7 @@ public class EventDaoImpl extends BaseMongoDaoImpl<Event> implements EventDao {
Calendar date = Calendar.getInstance();
int year = date.get(Calendar.YEAR);
for (int i = 0; i < years; i++) {
res.add(COLLECTION_PREFIX + (year - i));
res.add(COLLECTION_PREFIX + "_" + (year - i));
}
return res;
}
......
......@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture;
@Component("eventDataDao")
public class EventDataDaoImpl extends BaseMongoDaoImpl<EventData> implements EventDataDao {
protected static final String COLLECTION_PREFIX = "brandkbs_event_data_";
protected static final String COLLECTION_PREFIX = "brandkbs_event_data";
private static final String TIME_PATTERN = "yyyy";
public EventDataDaoImpl() {
......
......@@ -93,6 +93,7 @@ public class EventDataServiceImpl implements EventDataService {
private void updateEventData(Event event, List<EventData> eventDataList) {
// 根据配置筛选目标数据
eventDataList = filterEventData(event, eventDataList);
log.info("analysisEvent-eventId:{},关键词筛选后剩余:{}条", event.getId(), eventDataList.size());
// 删除历史数据
deleteEventRelated(event);
// 数据入库
......@@ -107,7 +108,7 @@ public class EventDataServiceImpl implements EventDataService {
String keyword = event.getKeyword();
for (EventData data : eventDataList) {
// 关键词筛选
if (Tools.isContains(Arrays.asList(keyword.split(keyword.contains(",") ? "," : "\\|")), (data.getTitle() + data.getContent()))) {
if (Tools.isContains(keyword, (data.getTitle() + data.getContent()))) {
hitList.add(data);
}
}
......
......@@ -851,6 +851,10 @@ public class Tools {
return dayList;
}
public static boolean isContains(String keyword, String content) {
return isContains(Arrays.asList(keyword.split("\\|")), content);
}
/**
* 是否包含关键字
*
......@@ -859,20 +863,25 @@ public class Tools {
* @return 是否包含关键字
*/
public static boolean isContains(List<String> keywords, String content) {
boolean contains = true;
if (null != keywords) {
content = content.toLowerCase();
// 按空格分割必须全部命中
for (String keyword : keywords) {
for (String word : keyword.split(" ")) {
if (!content.contains(word.toLowerCase())) {
//一个不命中,直接返回false
return false;
}
if (null == keywords || keywords.isEmpty()) {
return false;
}
content = content.toLowerCase();
// 有一组命中即可
for (String keyword : keywords) {
boolean contains = true;
for (String word : keyword.split(" ")) {
if (!content.contains(word.toLowerCase())) {
//一个不命中,跳转至下一组
contains = false;
break;
}
}
if (contains) {
return true;
}
}
return contains;
return false;
}
public static JSONObject getBrandkbsHitMap(Map<String, Object> esMap, String hitKey) {
......
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