diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DimensionRecommendProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DimensionRecommendProcessor.java index 72b5ce035..8a89650c8 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DimensionRecommendProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DimensionRecommendProcessor.java @@ -20,7 +20,7 @@ import java.util.Set; import java.util.stream.Collectors; /** - * DrillDownDimensionProcessor obtains metric recommended dimensions + * DimensionRecommendProcessor obtains metric recommended dimensions */ public class DimensionRecommendProcessor implements ExecuteResultProcessor { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DrillDownDimensionProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DrillDownDimensionProcessor.java deleted file mode 100644 index e10b01854..000000000 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/execute/DrillDownDimensionProcessor.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.tencent.supersonic.chat.processor.execute; - -import com.tencent.supersonic.chat.api.pojo.ModelSchema; -import com.tencent.supersonic.chat.api.pojo.RelatedSchemaElement; -import com.tencent.supersonic.chat.api.pojo.SchemaElement; -import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; -import com.tencent.supersonic.chat.api.pojo.response.QueryResult; -import com.tencent.supersonic.chat.service.SemanticService; -import com.tencent.supersonic.common.pojo.enums.QueryType; -import com.tencent.supersonic.common.util.ContextUtils; -import org.apache.commons.compress.utils.Lists; -import org.springframework.util.CollectionUtils; - -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * DrillDownDimensionProcessor obtains metric recommended dimensions based on setting - */ -public class DrillDownDimensionProcessor implements ExecuteResultProcessor { - - private static final int recommend_dimension_size = 5; - - @Override - public void process(QueryResult queryResult, SemanticParseInfo semanticParseInfo, ExecuteQueryReq queryReq) { - if (!QueryType.METRIC.equals(semanticParseInfo.getQueryType()) - || CollectionUtils.isEmpty(semanticParseInfo.getMetrics())) { - return; - } - SchemaElement element = semanticParseInfo.getMetrics().iterator().next(); - List dimensionRecommend = getDimensions(element.getId(), element.getModel()); - queryResult.setRecommendDimensions(dimensionRecommend); - } - - private List getDimensions(Long metricId, Long modelId) { - SemanticService semanticService = ContextUtils.getBean(SemanticService.class); - ModelSchema modelSchema = semanticService.getModelSchema(modelId); - List drillDownDimensions = Lists.newArrayList(); - Set metricElements = modelSchema.getMetrics(); - if (!CollectionUtils.isEmpty(metricElements)) { - Optional metric = metricElements.stream().filter(schemaElement -> - metricId.equals(schemaElement.getId()) - && !CollectionUtils.isEmpty(schemaElement.getRelatedSchemaElements())) - .findFirst(); - if (metric.isPresent()) { - drillDownDimensions = metric.get().getRelatedSchemaElements().stream() - .map(RelatedSchemaElement::getDimensionId).collect(Collectors.toList()); - } - } - final List drillDownDimensionsFinal = drillDownDimensions; - return modelSchema.getDimensions().stream() - .filter(dim -> filterDimension(drillDownDimensionsFinal, dim)) - .sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed()) - .limit(recommend_dimension_size) - .collect(Collectors.toList()); - } - - private boolean filterDimension(List drillDownDimensions, SchemaElement dimension) { - if (Objects.isNull(dimension)) { - return false; - } - if (!CollectionUtils.isEmpty(drillDownDimensions)) { - return drillDownDimensions.contains(dimension.getId()); - } - return Objects.nonNull(dimension.getUseCnt()); - } - -}