From e1bf653169c31e1664f752e1d66bf468a041f6b2 Mon Sep 17 00:00:00 2001 From: emptyOVO Date: Wed, 16 Oct 2024 18:18:53 +0800 Subject: [PATCH] fix: when fuzzy match enabled, strong correlation data first --- .../transform/TransformFunctionDocServiceImpl.java | 9 ++++++++- .../transform/TransformFunctionDocServiceTest.java | 3 --- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceImpl.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceImpl.java index 7c81330400..d55d2dc3ee 100644 --- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceImpl.java +++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceImpl.java @@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -44,7 +45,7 @@ public class TransformFunctionDocServiceImpl implements TransformFunctionDocServ private final FuzzyScore fuzzyScore = new FuzzyScore(Locale.ENGLISH); - private static final int FUZZY_THRESHOLD = 3; + private static final int FUZZY_THRESHOLD = 5; @Override public PageResult listByCondition(TransformFunctionDocRequest request) { @@ -74,6 +75,12 @@ private List filterFunctionInfos(String type, String name, boolean .map(n -> fuzzyMatch ? isFuzzyMatch(n, functionInfo.getFunctionName()) : functionInfo.getFunctionName().toLowerCase().contains(n.toLowerCase())) .orElse(true)) + .collect(Collectors.toList()).stream() + .sorted(fuzzyMatch ? + // strong correlation data first + Comparator.comparingInt((FunctionInfo f) -> fuzzyScore.fuzzyScore(f.getFunctionName(), name)) + .reversed() + : Comparator.comparing(FunctionInfo::getFunctionName)) .collect(Collectors.toList()); } diff --git a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceTest.java index 67edd5ef86..894343f142 100644 --- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceTest.java +++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/TransformFunctionDocServiceTest.java @@ -120,13 +120,10 @@ public void testTransformFunctionDocByName() { @Test public void testTransformFunctionDocByNameFuzzy() { TransformFunctionDocRequest request = new TransformFunctionDocRequest(); - request.setType(FunctionConstant.JSON_TYPE); - // wrong function name request.setName("json_aray"); PageResult functionDocs = transformFunctionDocService.listByCondition(request); - Assertions.assertFalse(functionDocs.getList().isEmpty()); }