diff --git a/CHANGELOG.md b/CHANGELOG.md index 35253a8d4..953671c34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ - add datasource agg_time option - add function name adaptor in clickhouse - add dimension and metric show in dsl - - add support for dimensions and metrics to dynamically update the knowledge base + ### Updated - update user guide doc diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SearchServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SearchServiceImpl.java index 4a6827b82..eff21a725 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SearchServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SearchServiceImpl.java @@ -197,6 +197,15 @@ public class SearchServiceImpl implements SearchService { .schemaElementType(schemaElementType) .subRecommend(wordName) .build(); + ItemNameVisibilityInfo visibility = (ItemNameVisibilityInfo) caffeineCache.getIfPresent(modelId); + if (visibility == null) { + visibility = configService.getVisibilityByModelId(modelId); + caffeineCache.put(modelId, visibility); + } + if (visibility.getBlackMetricNameList().contains(searchResult.getRecommend()) + || visibility.getBlackDimNameList().contains(searchResult.getRecommend())) { + return searchResults; + } if (metricModelCount <= 0 && !existMetricAndDimension) { if (filterByQueryFilter(wordName, queryFilters)) { return searchResults; @@ -204,12 +213,7 @@ public class SearchServiceImpl implements SearchService { searchResults.add(searchResult); int metricSize = getMetricSize(natureToNameMap); //invisibility to filter metrics - ItemNameVisibilityInfo itemNameVisibility = (ItemNameVisibilityInfo) caffeineCache.getIfPresent(modelId); - if (itemNameVisibility == null) { - itemNameVisibility = configService.getVisibilityByModelId(modelId); - caffeineCache.put(modelId, itemNameVisibility); - } - List blackMetricNameList = itemNameVisibility.getBlackMetricNameList(); + List blackMetricNameList = visibility.getBlackMetricNameList(); List metrics = filerMetricsByModel(metricsDb, modelId, metricSize * 3) .stream().filter(o -> !blackMetricNameList.contains(o)) .limit(metricSize).collect(Collectors.toList()); @@ -328,14 +332,10 @@ public class SearchServiceImpl implements SearchService { visibility = configService.getVisibilityByModelId(modelId); caffeineCache.put(modelId, visibility); } - if (semanticType.equals(SchemaElementType.DIMENSION) + if (!visibility.getBlackMetricNameList().contains(mapResult.getName()) && !visibility.getBlackDimNameList().contains(mapResult.getName())) { searchResults.add(searchResult); } - if (semanticType.equals(SchemaElementType.METRIC) - && !visibility.getBlackMetricNameList().contains(mapResult.getName())) { - searchResults.add(searchResult); - } } log.info("parseResult:{},dimensionMetricClassIds:{},possibleModels:{}", mapResult, dimensionMetricClassIds, possibleModels); diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java index e2b4a9420..b549a121c 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/HanlpHelper.java @@ -167,7 +167,7 @@ public class HanlpHelper { public static void removeFromCustomDictionary(DictWord dictWord) { log.info("dictWord:{}", dictWord); CoreDictionary.Attribute attribute = getDynamicCustomDictionary().get(dictWord.getWord()); - if (attribute != null) { + if (attribute == null) { return; } log.info("get attribute:{}", attribute);