mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
(fix)(chat)Fix WhereCorrector's handling of time dimensions of weeks and months (#372)
This commit is contained in:
@@ -70,7 +70,7 @@ public class WhereCorrector extends BaseSemanticCorrector {
|
||||
private void addDateIfNotExist(SemanticParseInfo semanticParseInfo) {
|
||||
String correctS2SQL = semanticParseInfo.getSqlInfo().getCorrectS2SQL();
|
||||
List<String> whereFields = SqlParserSelectHelper.getWhereFields(correctS2SQL);
|
||||
if (CollectionUtils.isEmpty(whereFields) || !whereFields.contains(TimeDimensionEnum.DAY.getChName())) {
|
||||
if (CollectionUtils.isEmpty(whereFields) || !TimeDimensionEnum.containsZhTimeDimension(whereFields)) {
|
||||
String currentDate = S2SQLDateHelper.getReferenceDate(semanticParseInfo.getModelId());
|
||||
if (StringUtils.isNotBlank(currentDate)) {
|
||||
correctS2SQL = SqlParserAddHelper.addParenthesisToWhere(correctS2SQL);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.tencent.supersonic.common.pojo.enums;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -37,4 +39,18 @@ public enum TimeDimensionEnum {
|
||||
public String getChName() {
|
||||
return chName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a time dimension field is included in a Chinese text field
|
||||
* @param fields field
|
||||
* @return true/fase
|
||||
*/
|
||||
public static boolean containsZhTimeDimension(List<String> fields) {
|
||||
if (CollectionUtil.isEmpty(fields)) {
|
||||
return false;
|
||||
}
|
||||
return fields.contains(TimeDimensionEnum.DAY.getChName())
|
||||
|| fields.contains(TimeDimensionEnum.WEEK.getChName())
|
||||
|| fields.contains(TimeDimensionEnum.MONTH.getChName());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user