diff --git a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/ReplaceService.java b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/ReplaceService.java index 0f4957eab..d7070331f 100644 --- a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/ReplaceService.java +++ b/common/src/main/java/com/tencent/supersonic/common/jsqlparser/ReplaceService.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.common.jsqlparser; +import com.tencent.supersonic.common.util.EditDistanceUtils; import com.tencent.supersonic.common.util.StringUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -21,7 +22,7 @@ import java.util.stream.Collectors; @Data public class ReplaceService { - @Value("${s2.replace.column.threshold:0.4}") + @Value("${s2.replace.threshold:0.4}") private double replaceColumnThreshold; public void replaceFunction(Function expression, Map fieldNameMap, diff --git a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/EditDistanceUtils.java b/common/src/main/java/com/tencent/supersonic/common/util/EditDistanceUtils.java similarity index 96% rename from common/src/main/java/com/tencent/supersonic/common/jsqlparser/EditDistanceUtils.java rename to common/src/main/java/com/tencent/supersonic/common/util/EditDistanceUtils.java index 9499db316..4f24586ae 100644 --- a/common/src/main/java/com/tencent/supersonic/common/jsqlparser/EditDistanceUtils.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/EditDistanceUtils.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.common.jsqlparser; +package com.tencent.supersonic.common.util; public class EditDistanceUtils { diff --git a/common/src/test/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelperTest.java index c3a579558..f4f0c9220 100644 --- a/common/src/test/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/jsqlparser/SqlReplaceHelperTest.java @@ -26,7 +26,7 @@ class SqlReplaceHelperTest { @BeforeEach public void setUp() { ReplaceService replaceService = new ReplaceService(); - replaceService.setReplaceColumnThreshold(0.0); + replaceService.setReplaceColumnThreshold(0.4); // Mock the static method ContextUtils.getBean mockedContextUtils = mockStatic(ContextUtils.class); @@ -82,9 +82,8 @@ class SqlReplaceHelperTest { replaceSql = SqlReplaceHelper.replaceValue(replaceSql, filedNameToValueMap2, false); Assert.assertEquals( - "SELECT 歌曲名 FROM 歌曲库 WHERE datediff('day', 发布日期, '2023-08-09') <= 1 AND 歌手名 = '周杰伦' " - + "AND 歌手名 = '林俊杰' AND 歌手名 = '陈奕迅' AND 数据日期 = '2023-08-09' AND " - + "歌曲发布时 = '2023-08-01' ORDER BY 播放量 DESC LIMIT 11", + "SELECT 歌曲名 FROM 歌曲库 WHERE datediff('day', 发布日期, '2023-08-09') <= 1 AND 歌手名 = '周杰伦' " + + "AND 歌手名 = '林俊杰' AND 歌手名 = '陈' AND 数据日期 = '2023-08-09' AND 歌曲发布时 = '2023-08-01' ORDER BY 播放量 DESC LIMIT 11", replaceSql); replaceSql = "select 歌曲名 from 歌曲库 where (datediff('day', 发布日期, '2023-08-09') <= 1 " @@ -94,9 +93,8 @@ class SqlReplaceHelperTest { replaceSql = SqlReplaceHelper.replaceValue(replaceSql, filedNameToValueMap2, false); Assert.assertEquals( - "SELECT 歌曲名 FROM 歌曲库 WHERE (datediff('day', 发布日期, '2023-08-09') <= 1 AND 歌手名 = '周杰伦' " - + "AND 歌手名 = '林俊杰' AND 歌手名 = '陈奕迅' AND 歌曲发布时 = '2023-08-01') " - + "AND 数据日期 = '2023-08-09' ORDER BY 播放量 DESC LIMIT 11", + "SELECT 歌曲名 FROM 歌曲库 WHERE (datediff('day', 发布日期, '2023-08-09') <= 1 AND 歌手名 = '周杰伦' AND " + + "歌手名 = '林俊杰' AND 歌手名 = '陈' AND 歌曲发布时 = '2023-08-01') AND 数据日期 = '2023-08-09' ORDER BY 播放量 DESC LIMIT 11", replaceSql); replaceSql = "select 歌曲名 from 歌曲库 where (datediff('day', 发布日期, '2023-08-09') <= 1 " @@ -107,10 +105,9 @@ class SqlReplaceHelperTest { replaceSql = SqlReplaceHelper.replaceValue(replaceSql, filedNameToValueMap2, false); Assert.assertEquals( - "SELECT 歌曲名 FROM 歌曲库 WHERE (datediff('day', 发布日期, '2023-08-09') <= 1 AND " - + "歌手名 = '周杰伦' AND 歌手名 = '林俊杰' AND 歌手名 = '陈奕迅' AND 歌曲发布时 = '2023-08-01' " - + "AND 播放量 < (SELECT min(播放量) FROM 歌曲库 WHERE 语种 = '英文')) AND 数据日期 = '2023-08-09' " - + "ORDER BY 播放量 DESC LIMIT 11", + "SELECT 歌曲名 FROM 歌曲库 WHERE (datediff('day', 发布日期, '2023-08-09') <= 1 AND 歌手名 = '周杰伦' AND 歌手名 = '林俊杰' AND " + + "歌手名 = '陈' AND 歌曲发布时 = '2023-08-01' AND 播放量 < (SELECT min(播放量) FROM 歌曲库 WHERE 语种 = '英文')) " + + "AND 数据日期 = '2023-08-09' ORDER BY 播放量 DESC LIMIT 11", replaceSql); Map> filedNameToValueMap3 = new HashMap<>(); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java index 1fbc754d2..69150a879 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java @@ -20,7 +20,7 @@ import java.util.Set; public abstract class BaseMatchStrategy implements MatchStrategy { @Override public Map> match(ChatQueryContext chatQueryContext, List terms, - Set detectDataSetIds) { + Set detectDataSetIds) { String text = chatQueryContext.getRequest().getQueryText(); if (Objects.isNull(terms) || StringUtils.isEmpty(text)) { return null; @@ -36,7 +36,7 @@ public abstract class BaseMatchStrategy implements MatchStr } public List detect(ChatQueryContext chatQueryContext, List terms, - Set detectDataSetIds) { + Set detectDataSetIds) { throw new RuntimeException("Not implemented"); } @@ -64,6 +64,9 @@ public abstract class BaseMatchStrategy implements MatchStr } public double getThreshold(Double threshold, Double minThreshold, MapModeEnum mapModeEnum) { + if (MapModeEnum.STRICT.equals(mapModeEnum)) { + return 1.0d; + } double decreaseAmount = (threshold - minThreshold) / 4; double divideThreshold = threshold - mapModeEnum.threshold * decreaseAmount; return divideThreshold >= minThreshold ? divideThreshold : minThreshold;