[improvement][chat] The two characters need to be a perfect match (#1805)

This commit is contained in:
lexluo09
2024-10-15 12:21:14 +08:00
committed by GitHub
parent 2fa3d39539
commit 9302d1f6e4

View File

@@ -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<Long, List<SchemaElementMatch>> dataSetElementMatches =
chatQueryContext.getMapInfo().getDataSetElementMatches();
for (Map.Entry<Long, List<SchemaElementMatch>> entry : dataSetElementMatches.entrySet()) {
List<SchemaElementMatch> 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<SchemaElement> needRemovePredicate) {
Map<Long, List<SchemaElementMatch>> dataSetElementMatches =