mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +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) {
|
private void addDateIfNotExist(SemanticParseInfo semanticParseInfo) {
|
||||||
String correctS2SQL = semanticParseInfo.getSqlInfo().getCorrectS2SQL();
|
String correctS2SQL = semanticParseInfo.getSqlInfo().getCorrectS2SQL();
|
||||||
List<String> whereFields = SqlParserSelectHelper.getWhereFields(correctS2SQL);
|
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());
|
String currentDate = S2SQLDateHelper.getReferenceDate(semanticParseInfo.getModelId());
|
||||||
if (StringUtils.isNotBlank(currentDate)) {
|
if (StringUtils.isNotBlank(currentDate)) {
|
||||||
correctS2SQL = SqlParserAddHelper.addParenthesisToWhere(correctS2SQL);
|
correctS2SQL = SqlParserAddHelper.addParenthesisToWhere(correctS2SQL);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.tencent.supersonic.common.pojo.enums;
|
package com.tencent.supersonic.common.pojo.enums;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -37,4 +39,18 @@ public enum TimeDimensionEnum {
|
|||||||
public String getChName() {
|
public String getChName() {
|
||||||
return chName;
|
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