From 805abeb2614436418eeef659d8a913563eec1e12 Mon Sep 17 00:00:00 2001 From: yangde <34122685+yonyong@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:06:49 +0800 Subject: [PATCH] (fix)(chat)Fix WhereCorrector's handling of time dimensions of weeks and months (#372) --- .../chat/corrector/WhereCorrector.java | 2 +- .../common/pojo/enums/TimeDimensionEnum.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/WhereCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/WhereCorrector.java index 6fc2f3099..9df20f37e 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/WhereCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/WhereCorrector.java @@ -70,7 +70,7 @@ public class WhereCorrector extends BaseSemanticCorrector { private void addDateIfNotExist(SemanticParseInfo semanticParseInfo) { String correctS2SQL = semanticParseInfo.getSqlInfo().getCorrectS2SQL(); List 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); diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java index de318007f..352b17f2c 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java @@ -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 fields) { + if (CollectionUtil.isEmpty(fields)) { + return false; + } + return fields.contains(TimeDimensionEnum.DAY.getChName()) + || fields.contains(TimeDimensionEnum.WEEK.getChName()) + || fields.contains(TimeDimensionEnum.MONTH.getChName()); + } }