From 9302d1f6e4f11c7dd0e5782a7670f03134dd2022 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:21:14 +0800 Subject: [PATCH] [improvement][chat] The two characters need to be a perfect match (#1805) --- .../supersonic/headless/chat/mapper/MapFilter.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapFilter.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapFilter.java index 948adfd15..cf388622a 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapFilter.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapFilter.java @@ -21,6 +21,7 @@ public class MapFilter { public static void filter(ChatQueryContext chatQueryContext) { filterByDataSetId(chatQueryContext); filterByDetectWordLenLessThanOne(chatQueryContext); + twoCharactersMustEqual(chatQueryContext); switch (chatQueryContext.getQueryDataType()) { case TAG: filterByQueryDataType(chatQueryContext, element -> !(element.getIsTag() > 0)); @@ -70,6 +71,19 @@ public class MapFilter { } } + private static void twoCharactersMustEqual(ChatQueryContext chatQueryContext) { + Map> dataSetElementMatches = + chatQueryContext.getMapInfo().getDataSetElementMatches(); + for (Map.Entry> entry : dataSetElementMatches.entrySet()) { + List value = entry.getValue(); + if (!CollectionUtils.isEmpty(value)) { + value.removeIf(schemaElementMatch -> StringUtils + .length(schemaElementMatch.getDetectWord()) <= 2 + && schemaElementMatch.getSimilarity() < 1); + } + } + } + public static void filterByQueryDataType(ChatQueryContext chatQueryContext, Predicate needRemovePredicate) { Map> dataSetElementMatches =