From f917defea8af8bdff4dcf2e892dfbc58754087dd Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:44:00 +0800 Subject: [PATCH] [improvement](chat) Converting bizName to Name requires consideration of the time field (#412) --- .../supersonic/chat/query/BaseSemanticQuery.java | 3 +++ .../common/pojo/enums/TimeDimensionEnum.java | 11 +++++++++++ .../query/parser/convert/QueryReqConverter.java | 9 ++------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/BaseSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/BaseSemanticQuery.java index 293056504..eaebb11a4 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/BaseSemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/BaseSemanticQuery.java @@ -12,6 +12,7 @@ import com.tencent.supersonic.chat.utils.QueryReqBuilder; import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Filter; import com.tencent.supersonic.common.pojo.Order; +import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.knowledge.service.SchemaService; import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; @@ -86,6 +87,8 @@ public abstract class BaseSemanticQuery implements SemanticQuery, Serializable { SchemaService schemaService = ContextUtils.getBean(SchemaService.class); Map bizNameToName = schemaService.getSemanticSchema() .getBizNameToName(queryStructReq.getModelId()); + bizNameToName.putAll(TimeDimensionEnum.getNameToNameMap()); + List orders = queryStructReq.getOrders(); if (CollectionUtils.isNotEmpty(orders)) { for (Order order : orders) { 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 d27357993..03a17328f 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 @@ -3,6 +3,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.Map; import java.util.stream.Collectors; @@ -31,6 +32,16 @@ public enum TimeDimensionEnum { return Arrays.stream(TimeDimensionEnum.values()).map(TimeDimensionEnum::getChName).collect(Collectors.toList()); } + public static Map getChNameToNameMap() { + return Arrays.stream(TimeDimensionEnum.values()) + .collect(Collectors.toMap(TimeDimensionEnum::getChName, TimeDimensionEnum::getName, (k1, k2) -> k1)); + } + + public static Map getNameToNameMap() { + return Arrays.stream(TimeDimensionEnum.values()) + .collect(Collectors.toMap(TimeDimensionEnum::getName, TimeDimensionEnum::getName, (k1, k2) -> k1)); + } + public String getName() { return name; } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java index a9ed84119..994ec96aa 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java @@ -184,14 +184,9 @@ public class QueryReqConverter { .flatMap(entry -> getPairStream(entry.getAlias(), entry.getName(), entry.getBizName())) .collect(Collectors.toMap(a -> a.getLeft(), a -> a.getRight(), (k1, k2) -> k1)); - dimensionResults.put(TimeDimensionEnum.DAY.getChName(), TimeDimensionEnum.DAY.getName()); - dimensionResults.put(TimeDimensionEnum.MONTH.getChName(), TimeDimensionEnum.MONTH.getName()); - dimensionResults.put(TimeDimensionEnum.WEEK.getChName(), TimeDimensionEnum.WEEK.getName()); - - dimensionResults.put(TimeDimensionEnum.DAY.getName(), TimeDimensionEnum.DAY.getName()); - dimensionResults.put(TimeDimensionEnum.MONTH.getName(), TimeDimensionEnum.MONTH.getName()); - dimensionResults.put(TimeDimensionEnum.WEEK.getName(), TimeDimensionEnum.WEEK.getName()); + dimensionResults.putAll(TimeDimensionEnum.getChNameToNameMap()); + dimensionResults.putAll(TimeDimensionEnum.getNameToNameMap()); dimensionResults.putAll(metricResults); return dimensionResults; }