From ac250907f0ab2717e651eb30fc1df414f5c09326 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 20 Sep 2024 17:54:29 +0800 Subject: [PATCH] [fix][headless-chat]Fix NPE during word searching process.#1672 --- .../chat/knowledge/helper/NatureHelper.java | 4 --- .../service/impl/RetrieveServiceImpl.java | 32 ++++--------------- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java index 94e4c0cf7..7c4b5ce39 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java @@ -113,10 +113,6 @@ public class NatureHelper { && StringUtils.isNumeric(nature.split(DictWordType.NATURE_SPILT)[1]); } - public static boolean isTermNature(String nature) { - return isNatureValid(nature) && nature.endsWith(DictWordType.TERM.getType()); - } - public static DataSetInfoStat getDataSetStat(List terms) { return DataSetInfoStat.builder() .dataSetCount(getDataSetCount(terms)) diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/RetrieveServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/RetrieveServiceImpl.java index da318eeea..aa8093a5f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/RetrieveServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/RetrieveServiceImpl.java @@ -105,8 +105,7 @@ public class RetrieveServiceImpl implements RetrieveService { Set searchResults = new LinkedHashSet(); DataSetInfoStat dataSetInfoStat = NatureHelper.getDataSetStat(originals); - List possibleDataSets = - getPossibleDataSets(queryNLReq, originals, dataSetInfoStat, dataSetIds); + List possibleDataSets = getPossibleDataSets(queryNLReq, originals, dataSetIds); // 5.1 priority dimension metric boolean existMetricAndDimension = @@ -141,36 +140,19 @@ public class RetrieveServiceImpl implements RetrieveService { } private List getPossibleDataSets( - QueryNLReq queryCtx, - List originals, - DataSetInfoStat dataSetInfoStat, - Set dataSetIds) { + QueryNLReq queryCtx, List originals, Set dataSetIds) { if (CollectionUtils.isNotEmpty(dataSetIds)) { return new ArrayList<>(dataSetIds); } List possibleDataSets = NatureHelper.selectPossibleDataSets(originals); - - Long contextDataset = queryCtx.getContextParseInfo().getDataSetId(); - - log.debug( - "possibleDataSets:{},dataSetInfoStat:{},contextDataset:{}", - possibleDataSets, - dataSetInfoStat, - contextDataset); - - // If nothing is recognized or only metric are present, then add the contextDataset. - if (nothingOrOnlyMetric(dataSetInfoStat)) { - return Lists.newArrayList(contextDataset); + if (possibleDataSets.isEmpty()) { + if (Objects.nonNull(queryCtx.getContextParseInfo())) { + possibleDataSets.add(queryCtx.getContextParseInfo().getDataSetId()); + } } - return possibleDataSets; - } - private boolean nothingOrOnlyMetric(DataSetInfoStat modelStat) { - return modelStat.getMetricDataSetCount() >= 0 - && modelStat.getDimensionDataSetCount() <= 0 - && modelStat.getDimensionValueDataSetCount() <= 0 - && modelStat.getDataSetCount() <= 0; + return possibleDataSets; } private Set searchDimensionValue(