mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
[improvement][chat] The similarity of MapModeEnum.STRICT is 1 (#1851)
This commit is contained in:
@@ -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<String, String> fieldNameMap,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.common.jsqlparser;
|
||||
package com.tencent.supersonic.common.util;
|
||||
|
||||
public class EditDistanceUtils {
|
||||
|
||||
@@ -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<String, Map<String, String>> filedNameToValueMap3 = new HashMap<>();
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.Set;
|
||||
public abstract class BaseMatchStrategy<T extends MapResult> implements MatchStrategy<T> {
|
||||
@Override
|
||||
public Map<MatchText, List<T>> match(ChatQueryContext chatQueryContext, List<S2Term> terms,
|
||||
Set<Long> detectDataSetIds) {
|
||||
Set<Long> detectDataSetIds) {
|
||||
String text = chatQueryContext.getRequest().getQueryText();
|
||||
if (Objects.isNull(terms) || StringUtils.isEmpty(text)) {
|
||||
return null;
|
||||
@@ -36,7 +36,7 @@ public abstract class BaseMatchStrategy<T extends MapResult> implements MatchStr
|
||||
}
|
||||
|
||||
public List<T> detect(ChatQueryContext chatQueryContext, List<S2Term> terms,
|
||||
Set<Long> detectDataSetIds) {
|
||||
Set<Long> detectDataSetIds) {
|
||||
throw new RuntimeException("Not implemented");
|
||||
}
|
||||
|
||||
@@ -64,6 +64,9 @@ public abstract class BaseMatchStrategy<T extends MapResult> 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;
|
||||
|
||||
Reference in New Issue
Block a user