mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-18 08:17:18 +00:00
(improvement)(Headless)(Chat) Change View to DataSet (#782)
* (improvement)(Headless)(Chat) Change view to dataSet --------- Co-authored-by: jolunoluo <jolunoluo@tencent.com>
This commit is contained in:
@@ -15,7 +15,7 @@ public class PluginDO {
|
||||
|
||||
private String type;
|
||||
|
||||
private String view;
|
||||
private String dataSet;
|
||||
|
||||
private String pattern;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.pojo.RelatedSchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.chat.server.service.SemanticService;
|
||||
@@ -34,15 +34,15 @@ public class DimensionRecommendProcessor implements ExecuteResultProcessor {
|
||||
return;
|
||||
}
|
||||
SchemaElement element = semanticParseInfo.getMetrics().iterator().next();
|
||||
List<SchemaElement> dimensionRecommended = getDimensions(element.getId(), element.getView());
|
||||
List<SchemaElement> dimensionRecommended = getDimensions(element.getId(), element.getDataSet());
|
||||
queryResult.setRecommendedDimensions(dimensionRecommended);
|
||||
}
|
||||
|
||||
private List<SchemaElement> getDimensions(Long metricId, Long viewId) {
|
||||
private List<SchemaElement> getDimensions(Long metricId, Long dataSetId) {
|
||||
SemanticService semanticService = ContextUtils.getBean(SemanticService.class);
|
||||
ViewSchema viewSchema = semanticService.getViewSchema(viewId);
|
||||
DataSetSchema dataSetSchema = semanticService.getDataSetSchema(dataSetId);
|
||||
List<Long> drillDownDimensions = Lists.newArrayList();
|
||||
Set<SchemaElement> metricElements = viewSchema.getMetrics();
|
||||
Set<SchemaElement> metricElements = dataSetSchema.getMetrics();
|
||||
if (!CollectionUtils.isEmpty(metricElements)) {
|
||||
Optional<SchemaElement> metric = metricElements.stream().filter(schemaElement ->
|
||||
metricId.equals(schemaElement.getId())
|
||||
@@ -54,7 +54,7 @@ public class DimensionRecommendProcessor implements ExecuteResultProcessor {
|
||||
}
|
||||
}
|
||||
final List<Long> drillDownDimensionsFinal = drillDownDimensions;
|
||||
return viewSchema.getDimensions().stream()
|
||||
return dataSetSchema.getDimensions().stream()
|
||||
.filter(dim -> filterDimension(drillDownDimensionsFinal, dim))
|
||||
.sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed())
|
||||
.limit(recommend_dimension_size)
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.tencent.supersonic.chat.server.processor.execute;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.google.common.collect.Lists;
|
||||
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.common.config.EmbeddingConfig;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.util.ComponentFactory;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
@@ -14,6 +13,9 @@ import com.tencent.supersonic.common.util.embedding.Retrieval;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQuery;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult;
|
||||
import com.tencent.supersonic.common.util.embedding.S2EmbeddingStore;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.headless.server.service.MetaEmbeddingService;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -46,15 +48,14 @@ public class MetricRecommendProcessor implements ExecuteResultProcessor {
|
||||
}
|
||||
List<String> metricNames = Collections.singletonList(parseInfo.getMetrics().iterator().next().getName());
|
||||
Map<String, String> filterCondition = new HashMap<>();
|
||||
filterCondition.put("modelId", parseInfo.getMetrics().iterator().next().getView().toString());
|
||||
filterCondition.put("modelId", parseInfo.getMetrics().iterator().next().getDataSet().toString());
|
||||
filterCondition.put("type", SchemaElementType.METRIC.name());
|
||||
RetrieveQuery retrieveQuery = RetrieveQuery.builder().queryTextsList(metricNames)
|
||||
.filterCondition(filterCondition).queryEmbeddings(null).build();
|
||||
|
||||
EmbeddingConfig embeddingConfig = ContextUtils.getBean(EmbeddingConfig.class);
|
||||
|
||||
List<RetrieveQueryResult> retrieveQueryResults = s2EmbeddingStore.retrieveQuery(
|
||||
embeddingConfig.getMetaCollectionName(), retrieveQuery, METRIC_RECOMMEND_SIZE + 1);
|
||||
MetaEmbeddingService metaEmbeddingService = ContextUtils.getBean(MetaEmbeddingService.class);
|
||||
List<RetrieveQueryResult> retrieveQueryResults =
|
||||
metaEmbeddingService.retrieveQuery(Lists.newArrayList(parseInfo.getDataSetId()),
|
||||
retrieveQuery, METRIC_RECOMMEND_SIZE + 1);
|
||||
if (CollectionUtils.isEmpty(retrieveQueryResults)) {
|
||||
return;
|
||||
}
|
||||
@@ -71,9 +72,10 @@ public class MetricRecommendProcessor implements ExecuteResultProcessor {
|
||||
if (!metricIds.contains(Retrieval.getLongId(retrieval.getId()))) {
|
||||
SchemaElement schemaElement = JSONObject.parseObject(JSONObject.toJSONString(retrieval.getMetadata()),
|
||||
SchemaElement.class);
|
||||
if (retrieval.getMetadata().containsKey("viewId")) {
|
||||
String viewId = retrieval.getMetadata().get("viewId").toString();
|
||||
schemaElement.setView(Long.parseLong(viewId));
|
||||
if (retrieval.getMetadata().containsKey("dataSetId")) {
|
||||
String dataSetId = retrieval.getMetadata().get("dataSetId").toString()
|
||||
.replace(Constants.UNDERLINE, "");
|
||||
schemaElement.setDataSet(Long.parseLong(dataSetId));
|
||||
}
|
||||
schemaElement.setOrder(++metricOrder);
|
||||
parseInfo.getMetrics().add(schemaElement);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.chat.server.processor.parse;
|
||||
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.EntityInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.ParseResp;
|
||||
import com.tencent.supersonic.chat.core.pojo.ChatContext;
|
||||
@@ -37,9 +37,10 @@ public class EntityInfoProcessor implements ParseResultProcessor {
|
||||
return;
|
||||
}
|
||||
//1. set entity info
|
||||
ViewSchema viewSchema = queryContext.getSemanticSchema().getViewSchemaMap().get(parseInfo.getViewId());
|
||||
DataSetSchema dataSetSchema =
|
||||
queryContext.getSemanticSchema().getDataSetSchemaMap().get(parseInfo.getDataSetId());
|
||||
SemanticService semanticService = ContextUtils.getBean(SemanticService.class);
|
||||
EntityInfo entityInfo = semanticService.getEntityInfo(parseInfo, viewSchema, queryContext.getUser());
|
||||
EntityInfo entityInfo = semanticService.getEntityInfo(parseInfo, dataSetSchema, queryContext.getUser());
|
||||
if (QueryManager.isTagQuery(queryMode)
|
||||
|| QueryManager.isMetricQuery(queryMode)) {
|
||||
parseInfo.setEntityInfo(entityInfo);
|
||||
|
||||
@@ -74,9 +74,9 @@ public class ParseInfoProcessor implements ParseResultProcessor {
|
||||
}
|
||||
|
||||
//set filter
|
||||
Long viewId = parseInfo.getViewId();
|
||||
Long dataSetId = parseInfo.getDataSetId();
|
||||
try {
|
||||
Map<String, SchemaElement> fieldNameToElement = getNameToElement(viewId);
|
||||
Map<String, SchemaElement> fieldNameToElement = getNameToElement(dataSetId);
|
||||
List<QueryFilter> result = getDimensionFilter(fieldNameToElement, expressions);
|
||||
parseInfo.getDimensionFilters().addAll(result);
|
||||
} catch (Exception e) {
|
||||
@@ -88,31 +88,31 @@ public class ParseInfoProcessor implements ParseResultProcessor {
|
||||
return;
|
||||
}
|
||||
List<String> allFields = getFieldsExceptDate(SqlSelectHelper.getAllFields(sqlInfo.getCorrectS2SQL()));
|
||||
Set<SchemaElement> metrics = getElements(viewId, allFields, semanticSchema.getMetrics());
|
||||
Set<SchemaElement> metrics = getElements(dataSetId, allFields, semanticSchema.getMetrics());
|
||||
parseInfo.setMetrics(metrics);
|
||||
if (QueryType.METRIC.equals(parseInfo.getQueryType())) {
|
||||
List<String> groupByFields = SqlSelectHelper.getGroupByFields(sqlInfo.getCorrectS2SQL());
|
||||
List<String> groupByDimensions = getFieldsExceptDate(groupByFields);
|
||||
parseInfo.setDimensions(getElements(viewId, groupByDimensions, semanticSchema.getDimensions()));
|
||||
parseInfo.setDimensions(getElements(dataSetId, groupByDimensions, semanticSchema.getDimensions()));
|
||||
} else if (QueryType.TAG.equals(parseInfo.getQueryType())) {
|
||||
List<String> selectFields = SqlSelectHelper.getSelectFields(sqlInfo.getCorrectS2SQL());
|
||||
List<String> selectDimensions = getFieldsExceptDate(selectFields);
|
||||
parseInfo.setDimensions(getElements(viewId, selectDimensions, semanticSchema.getDimensions()));
|
||||
parseInfo.setDimensions(getElements(dataSetId, selectDimensions, semanticSchema.getDimensions()));
|
||||
}
|
||||
}
|
||||
|
||||
private Set<SchemaElement> getElements(Long viewId, List<String> allFields, List<SchemaElement> elements) {
|
||||
private Set<SchemaElement> getElements(Long dataSetId, List<String> allFields, List<SchemaElement> elements) {
|
||||
return elements.stream()
|
||||
.filter(schemaElement -> {
|
||||
if (CollectionUtils.isEmpty(schemaElement.getAlias())) {
|
||||
return viewId.equals(schemaElement.getView()) && allFields.contains(
|
||||
return dataSetId.equals(schemaElement.getDataSet()) && allFields.contains(
|
||||
schemaElement.getName());
|
||||
}
|
||||
Set<String> allFieldsSet = new HashSet<>(allFields);
|
||||
Set<String> aliasSet = new HashSet<>(schemaElement.getAlias());
|
||||
List<String> intersection = allFieldsSet.stream()
|
||||
.filter(aliasSet::contains).collect(Collectors.toList());
|
||||
return viewId.equals(schemaElement.getView()) && (allFields.contains(
|
||||
return dataSetId.equals(schemaElement.getDataSet()) && (allFields.contains(
|
||||
schemaElement.getName()) || !CollectionUtils.isEmpty(intersection));
|
||||
}
|
||||
).collect(Collectors.toSet());
|
||||
@@ -194,10 +194,10 @@ public class ParseInfoProcessor implements ParseResultProcessor {
|
||||
return dateExpressions.size() > 1 && Objects.nonNull(dateExpressions.get(1).getFieldValue());
|
||||
}
|
||||
|
||||
protected Map<String, SchemaElement> getNameToElement(Long viewId) {
|
||||
protected Map<String, SchemaElement> getNameToElement(Long dataSetId) {
|
||||
SemanticSchema semanticSchema = ContextUtils.getBean(SchemaService.class).getSemanticSchema();
|
||||
List<SchemaElement> dimensions = semanticSchema.getDimensions(viewId);
|
||||
List<SchemaElement> metrics = semanticSchema.getMetrics(viewId);
|
||||
List<SchemaElement> dimensions = semanticSchema.getDimensions(dataSetId);
|
||||
List<SchemaElement> metrics = semanticSchema.getMetrics(dataSetId);
|
||||
|
||||
List<SchemaElement> allElements = Lists.newArrayList();
|
||||
allElements.addAll(dimensions);
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ItemResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ViewResp;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@@ -84,14 +84,14 @@ public class ChatConfigController {
|
||||
}
|
||||
|
||||
//Compatible with front-end
|
||||
@GetMapping("/viewList")
|
||||
public List<ViewResp> getViewList() {
|
||||
return semanticInterpreter.getViewList(null);
|
||||
@GetMapping("/dataSetList")
|
||||
public List<DataSetResp> getDataSetList() {
|
||||
return semanticInterpreter.getDataSetList(null);
|
||||
}
|
||||
|
||||
@GetMapping("/viewList/{domainId}")
|
||||
public List<ViewResp> getViewList(@PathVariable("domainId") Long domainId) {
|
||||
return semanticInterpreter.getViewList(domainId);
|
||||
@GetMapping("/dataSetList/{domainId}")
|
||||
public List<DataSetResp> getDataSetList(@PathVariable("domainId") Long domainId) {
|
||||
return semanticInterpreter.getDataSetList(domainId);
|
||||
}
|
||||
|
||||
@PostMapping("/dimension/page")
|
||||
@@ -107,9 +107,9 @@ public class ChatConfigController {
|
||||
return semanticInterpreter.getMetricPage(pageMetricReq, user);
|
||||
}
|
||||
|
||||
@GetMapping("/getDomainViewTree")
|
||||
public List<ItemResp> getDomainViewTree() {
|
||||
return semanticInterpreter.getDomainViewTree();
|
||||
@GetMapping("/getDomainDataSetTree")
|
||||
public List<ItemResp> getDomainDataSetTree() {
|
||||
return semanticInterpreter.getDomainDataSetTree();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.QueryFilter;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.DataInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.EntityInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.ViewInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.DataSetInfo;
|
||||
import com.tencent.supersonic.chat.core.query.semantic.SemanticInterpreter;
|
||||
import com.tencent.supersonic.chat.core.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.chat.core.utils.QueryReqBuilder;
|
||||
@@ -50,19 +50,19 @@ public class SemanticService {
|
||||
return schemaService.getSemanticSchema();
|
||||
}
|
||||
|
||||
public ViewSchema getViewSchema(Long id) {
|
||||
return schemaService.getViewSchema(id);
|
||||
public DataSetSchema getDataSetSchema(Long id) {
|
||||
return schemaService.getDataSetSchema(id);
|
||||
}
|
||||
|
||||
public EntityInfo getEntityInfo(SemanticParseInfo parseInfo, ViewSchema viewSchema, User user) {
|
||||
if (parseInfo != null && parseInfo.getViewId() > 0) {
|
||||
EntityInfo entityInfo = getEntityBasicInfo(viewSchema);
|
||||
if (parseInfo.getDimensionFilters().size() <= 0 || entityInfo.getViewInfo() == null) {
|
||||
public EntityInfo getEntityInfo(SemanticParseInfo parseInfo, DataSetSchema dataSetSchema, User user) {
|
||||
if (parseInfo != null && parseInfo.getDataSetId() > 0) {
|
||||
EntityInfo entityInfo = getEntityBasicInfo(dataSetSchema);
|
||||
if (parseInfo.getDimensionFilters().size() <= 0 || entityInfo.getDataSetInfo() == null) {
|
||||
entityInfo.setMetrics(null);
|
||||
entityInfo.setDimensions(null);
|
||||
return entityInfo;
|
||||
}
|
||||
String primaryKey = entityInfo.getViewInfo().getPrimaryKey();
|
||||
String primaryKey = entityInfo.getDataSetInfo().getPrimaryKey();
|
||||
if (StringUtils.isNotBlank(primaryKey)) {
|
||||
String entityId = "";
|
||||
for (QueryFilter chatFilter : parseInfo.getDimensionFilters()) {
|
||||
@@ -75,7 +75,7 @@ public class SemanticService {
|
||||
}
|
||||
entityInfo.setEntityId(entityId);
|
||||
try {
|
||||
fillEntityInfoValue(entityInfo, viewSchema, user);
|
||||
fillEntityInfoValue(entityInfo, dataSetSchema, user);
|
||||
return entityInfo;
|
||||
} catch (Exception e) {
|
||||
log.error("setMainModel error", e);
|
||||
@@ -85,29 +85,29 @@ public class SemanticService {
|
||||
return null;
|
||||
}
|
||||
|
||||
private EntityInfo getEntityBasicInfo(ViewSchema viewSchema) {
|
||||
private EntityInfo getEntityBasicInfo(DataSetSchema dataSetSchema) {
|
||||
|
||||
EntityInfo entityInfo = new EntityInfo();
|
||||
if (viewSchema == null) {
|
||||
if (dataSetSchema == null) {
|
||||
return entityInfo;
|
||||
}
|
||||
Long viewId = viewSchema.getView().getView();
|
||||
ViewInfo viewInfo = new ViewInfo();
|
||||
viewInfo.setItemId(viewId.intValue());
|
||||
viewInfo.setName(viewSchema.getView().getName());
|
||||
viewInfo.setWords(viewSchema.getView().getAlias());
|
||||
viewInfo.setBizName(viewSchema.getView().getBizName());
|
||||
if (Objects.nonNull(viewSchema.getEntity())) {
|
||||
viewInfo.setPrimaryKey(viewSchema.getEntity().getBizName());
|
||||
Long dataSetId = dataSetSchema.getDataSet().getDataSet();
|
||||
DataSetInfo dataSetInfo = new DataSetInfo();
|
||||
dataSetInfo.setItemId(dataSetId.intValue());
|
||||
dataSetInfo.setName(dataSetSchema.getDataSet().getName());
|
||||
dataSetInfo.setWords(dataSetSchema.getDataSet().getAlias());
|
||||
dataSetInfo.setBizName(dataSetSchema.getDataSet().getBizName());
|
||||
if (Objects.nonNull(dataSetSchema.getEntity())) {
|
||||
dataSetInfo.setPrimaryKey(dataSetSchema.getEntity().getBizName());
|
||||
}
|
||||
entityInfo.setViewInfo(viewInfo);
|
||||
TagTypeDefaultConfig tagTypeDefaultConfig = viewSchema.getTagTypeDefaultConfig();
|
||||
entityInfo.setDataSetInfo(dataSetInfo);
|
||||
TagTypeDefaultConfig tagTypeDefaultConfig = dataSetSchema.getTagTypeDefaultConfig();
|
||||
if (tagTypeDefaultConfig == null || tagTypeDefaultConfig.getDefaultDisplayInfo() == null) {
|
||||
return entityInfo;
|
||||
}
|
||||
List<DataInfo> dimensions = tagTypeDefaultConfig.getDefaultDisplayInfo().getDimensionIds().stream()
|
||||
.map(id -> {
|
||||
SchemaElement element = viewSchema.getElement(SchemaElementType.DIMENSION, id);
|
||||
SchemaElement element = dataSetSchema.getElement(SchemaElementType.DIMENSION, id);
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public class SemanticService {
|
||||
}).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
List<DataInfo> metrics = tagTypeDefaultConfig.getDefaultDisplayInfo().getDimensionIds().stream()
|
||||
.map(id -> {
|
||||
SchemaElement element = viewSchema.getElement(SchemaElementType.METRIC, id);
|
||||
SchemaElement element = dataSetSchema.getElement(SchemaElementType.METRIC, id);
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -126,9 +126,9 @@ public class SemanticService {
|
||||
return entityInfo;
|
||||
}
|
||||
|
||||
public void fillEntityInfoValue(EntityInfo entityInfo, ViewSchema viewSchema, User user) {
|
||||
public void fillEntityInfoValue(EntityInfo entityInfo, DataSetSchema dataSetSchema, User user) {
|
||||
SemanticQueryResp queryResultWithColumns =
|
||||
getQueryResultWithSchemaResp(entityInfo, viewSchema, user);
|
||||
getQueryResultWithSchemaResp(entityInfo, dataSetSchema, user);
|
||||
if (queryResultWithColumns != null) {
|
||||
if (!CollectionUtils.isEmpty(queryResultWithColumns.getResultList())
|
||||
&& queryResultWithColumns.getResultList().size() > 0) {
|
||||
@@ -147,15 +147,16 @@ public class SemanticService {
|
||||
}
|
||||
}
|
||||
|
||||
public SemanticQueryResp getQueryResultWithSchemaResp(EntityInfo entityInfo, ViewSchema viewSchema, User user) {
|
||||
public SemanticQueryResp getQueryResultWithSchemaResp(EntityInfo entityInfo,
|
||||
DataSetSchema dataSetSchema, User user) {
|
||||
SemanticParseInfo semanticParseInfo = new SemanticParseInfo();
|
||||
semanticParseInfo.setView(viewSchema.getView());
|
||||
semanticParseInfo.setDataSet(dataSetSchema.getDataSet());
|
||||
semanticParseInfo.setQueryType(QueryType.TAG);
|
||||
semanticParseInfo.setMetrics(getMetrics(entityInfo));
|
||||
semanticParseInfo.setDimensions(getDimensions(entityInfo));
|
||||
DateConf dateInfo = new DateConf();
|
||||
int unit = 1;
|
||||
TimeDefaultConfig timeDefaultConfig = viewSchema.getTagTypeTimeDefaultConfig();
|
||||
TimeDefaultConfig timeDefaultConfig = dataSetSchema.getTagTypeTimeDefaultConfig();
|
||||
if (Objects.nonNull(timeDefaultConfig)) {
|
||||
unit = timeDefaultConfig.getUnit();
|
||||
String date = LocalDate.now().plusDays(-unit).toString();
|
||||
@@ -222,7 +223,7 @@ public class SemanticService {
|
||||
}
|
||||
|
||||
private String getEntityPrimaryName(EntityInfo entityInfo) {
|
||||
return entityInfo.getViewInfo().getPrimaryKey();
|
||||
return entityInfo.getDataSetInfo().getPrimaryKey();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -60,8 +60,8 @@ public class ChatServiceImpl implements ChatService {
|
||||
return null;
|
||||
}
|
||||
SemanticParseInfo originalSemanticParse = chatContext.getParseInfo();
|
||||
if (Objects.nonNull(originalSemanticParse) && Objects.nonNull(originalSemanticParse.getViewId())) {
|
||||
return originalSemanticParse.getViewId();
|
||||
if (Objects.nonNull(originalSemanticParse) && Objects.nonNull(originalSemanticParse.getDataSetId())) {
|
||||
return originalSemanticParse.getDataSetId();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ package com.tencent.supersonic.chat.server.service.impl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.chat.core.query.semantic.SemanticInterpreter;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigBaseReq;
|
||||
@@ -177,7 +177,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
|
||||
private ItemVisibilityInfo fetchVisibilityDescByConfig(ItemVisibility visibility,
|
||||
ViewSchema modelSchema) {
|
||||
DataSetSchema modelSchema) {
|
||||
ItemVisibilityInfo itemVisibilityDesc = new ItemVisibilityInfo();
|
||||
|
||||
List<Long> dimIdAllList = chatConfigHelper.generateAllDimIdList(modelSchema);
|
||||
@@ -219,20 +219,20 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
BeanUtils.copyProperties(chatConfigResp, chatConfigRich);
|
||||
|
||||
ViewSchema viewSchema = semanticService.getViewSchema(modelId);
|
||||
if (viewSchema == null) {
|
||||
DataSetSchema dataSetSchema = semanticService.getDataSetSchema(modelId);
|
||||
if (dataSetSchema == null) {
|
||||
return chatConfigRich;
|
||||
}
|
||||
chatConfigRich.setBizName(viewSchema.getView().getBizName());
|
||||
chatConfigRich.setModelName(viewSchema.getView().getName());
|
||||
chatConfigRich.setBizName(dataSetSchema.getDataSet().getBizName());
|
||||
chatConfigRich.setModelName(dataSetSchema.getDataSet().getName());
|
||||
|
||||
chatConfigRich.setChatAggRichConfig(fillChatAggRichConfig(viewSchema, chatConfigResp));
|
||||
chatConfigRich.setChatDetailRichConfig(fillChatDetailRichConfig(viewSchema, chatConfigRich, chatConfigResp));
|
||||
chatConfigRich.setChatAggRichConfig(fillChatAggRichConfig(dataSetSchema, chatConfigResp));
|
||||
chatConfigRich.setChatDetailRichConfig(fillChatDetailRichConfig(dataSetSchema, chatConfigRich, chatConfigResp));
|
||||
|
||||
return chatConfigRich;
|
||||
}
|
||||
|
||||
private ChatDetailRichConfigResp fillChatDetailRichConfig(ViewSchema modelSchema,
|
||||
private ChatDetailRichConfigResp fillChatDetailRichConfig(DataSetSchema modelSchema,
|
||||
ChatConfigRichResp chatConfigRich,
|
||||
ChatConfigResp chatConfigResp) {
|
||||
if (Objects.isNull(chatConfigResp) || Objects.isNull(chatConfigResp.getChatDetailConfig())) {
|
||||
@@ -251,7 +251,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
return detailRichConfig;
|
||||
}
|
||||
|
||||
private EntityRichInfoResp generateRichEntity(Entity entity, ViewSchema modelSchema) {
|
||||
private EntityRichInfoResp generateRichEntity(Entity entity, DataSetSchema modelSchema) {
|
||||
EntityRichInfoResp entityRichInfo = new EntityRichInfoResp();
|
||||
if (Objects.isNull(entity) || Objects.isNull(entity.getEntityId())) {
|
||||
return entityRichInfo;
|
||||
@@ -264,7 +264,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
return entityRichInfo;
|
||||
}
|
||||
|
||||
private ChatAggRichConfigResp fillChatAggRichConfig(ViewSchema modelSchema, ChatConfigResp chatConfigResp) {
|
||||
private ChatAggRichConfigResp fillChatAggRichConfig(DataSetSchema modelSchema, ChatConfigResp chatConfigResp) {
|
||||
if (Objects.isNull(chatConfigResp) || Objects.isNull(chatConfigResp.getChatAggConfig())) {
|
||||
return null;
|
||||
}
|
||||
@@ -281,7 +281,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
|
||||
private ChatDefaultRichConfigResp fetchDefaultConfig(ChatDefaultConfigReq chatDefaultConfig,
|
||||
ViewSchema modelSchema,
|
||||
DataSetSchema modelSchema,
|
||||
ItemVisibilityInfo itemVisibilityInfo) {
|
||||
ChatDefaultRichConfigResp defaultRichConfig = new ChatDefaultRichConfigResp();
|
||||
if (Objects.isNull(chatDefaultConfig)) {
|
||||
@@ -331,7 +331,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
|
||||
private List<KnowledgeInfoReq> fillKnowledgeBizName(List<KnowledgeInfoReq> knowledgeInfos,
|
||||
ViewSchema modelSchema) {
|
||||
DataSetSchema modelSchema) {
|
||||
if (CollectionUtils.isEmpty(knowledgeInfos)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
@@ -351,9 +351,9 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
@Override
|
||||
public List<ChatConfigRichResp> getAllChatRichConfig() {
|
||||
List<ChatConfigRichResp> chatConfigRichInfoList = new ArrayList<>();
|
||||
List<ViewSchema> modelSchemas = semanticInterpreter.getViewSchema();
|
||||
List<DataSetSchema> modelSchemas = semanticInterpreter.getDataSetSchema();
|
||||
modelSchemas.stream().forEach(modelSchema -> {
|
||||
ChatConfigRichResp chatConfigRichInfo = getConfigRichInfo(modelSchema.getView().getId());
|
||||
ChatConfigRichResp chatConfigRichInfo = getConfigRichInfo(modelSchema.getDataSet().getId());
|
||||
if (Objects.nonNull(chatConfigRichInfo)) {
|
||||
chatConfigRichInfoList.add(chatConfigRichInfo);
|
||||
}
|
||||
|
||||
@@ -93,8 +93,8 @@ public class PluginServiceImpl implements PluginService {
|
||||
if (StringUtils.isNotBlank(pluginQueryReq.getType())) {
|
||||
queryWrapper.lambda().eq(PluginDO::getType, pluginQueryReq.getType());
|
||||
}
|
||||
if (StringUtils.isNotBlank(pluginQueryReq.getView())) {
|
||||
queryWrapper.lambda().like(PluginDO::getView, pluginQueryReq.getView());
|
||||
if (StringUtils.isNotBlank(pluginQueryReq.getDataSet())) {
|
||||
queryWrapper.lambda().like(PluginDO::getDataSet, pluginQueryReq.getDataSet());
|
||||
}
|
||||
if (StringUtils.isNotBlank(pluginQueryReq.getParseMode())) {
|
||||
queryWrapper.lambda().eq(PluginDO::getParseMode, pluginQueryReq.getParseMode());
|
||||
@@ -180,8 +180,8 @@ public class PluginServiceImpl implements PluginService {
|
||||
public Plugin convert(PluginDO pluginDO) {
|
||||
Plugin plugin = new Plugin();
|
||||
BeanUtils.copyProperties(pluginDO, plugin);
|
||||
if (StringUtils.isNotBlank(pluginDO.getView())) {
|
||||
plugin.setViewList(Arrays.stream(pluginDO.getView().split(","))
|
||||
if (StringUtils.isNotBlank(pluginDO.getDataSet())) {
|
||||
plugin.setDataSetList(Arrays.stream(pluginDO.getDataSet().split(","))
|
||||
.map(Long::parseLong).collect(Collectors.toList()));
|
||||
}
|
||||
return plugin;
|
||||
@@ -194,7 +194,7 @@ public class PluginServiceImpl implements PluginService {
|
||||
pluginDO.setCreatedBy(user.getName());
|
||||
pluginDO.setUpdatedAt(new Date());
|
||||
pluginDO.setUpdatedBy(user.getName());
|
||||
pluginDO.setView(StringUtils.join(plugin.getViewList(), ","));
|
||||
pluginDO.setDataSet(StringUtils.join(plugin.getDataSetList(), ","));
|
||||
return pluginDO;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ public class PluginServiceImpl implements PluginService {
|
||||
BeanUtils.copyProperties(plugin, pluginDO);
|
||||
pluginDO.setUpdatedAt(new Date());
|
||||
pluginDO.setUpdatedBy(user.getName());
|
||||
pluginDO.setView(StringUtils.join(plugin.getViewList(), ","));
|
||||
pluginDO.setDataSet(StringUtils.join(plugin.getDataSetList(), ","));
|
||||
return pluginDO;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.tencent.supersonic.chat.server.service.impl;
|
||||
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.SchemaMapInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.QueryDataReq;
|
||||
@@ -296,7 +295,7 @@ public class QueryServiceImpl implements QueryService {
|
||||
similarQueryManager.saveSimilarQuery(SimilarQueryReq.builder().parseId(queryReq.getParseId())
|
||||
.queryId(queryReq.getQueryId())
|
||||
.agentId(chatQueryDO.getAgentId())
|
||||
.viewId(parseInfo.getViewId())
|
||||
.dataSetId(parseInfo.getDataSetId())
|
||||
.queryText(queryReq.getQueryText()).build());
|
||||
}
|
||||
|
||||
@@ -352,9 +351,9 @@ public class QueryServiceImpl implements QueryService {
|
||||
}
|
||||
QueryResult queryResult = semanticQuery.execute(user);
|
||||
queryResult.setChatContext(semanticQuery.getParseInfo());
|
||||
ViewSchema viewSchema = semanticSchema.getViewSchemaMap().get(parseInfo.getViewId());
|
||||
DataSetSchema dataSetSchema = semanticSchema.getDataSetSchemaMap().get(parseInfo.getDataSetId());
|
||||
SemanticService semanticService = ContextUtils.getBean(SemanticService.class);
|
||||
EntityInfo entityInfo = semanticService.getEntityInfo(parseInfo, viewSchema, user);
|
||||
EntityInfo entityInfo = semanticService.getEntityInfo(parseInfo, dataSetSchema, user);
|
||||
queryResult.setEntityInfo(entityInfo);
|
||||
return queryResult;
|
||||
}
|
||||
@@ -422,8 +421,9 @@ public class QueryServiceImpl implements QueryService {
|
||||
ChatParseDO chatParseDO = chatService.getParseInfo(queryId, parseId);
|
||||
SemanticParseInfo parseInfo = JsonUtil.toObject(chatParseDO.getParseInfo(), SemanticParseInfo.class);
|
||||
SemanticService semanticService = ContextUtils.getBean(SemanticService.class);
|
||||
ViewSchema viewSchema = schemaService.getSemanticSchema().getViewSchemaMap().get(parseInfo.getViewId());
|
||||
return semanticService.getEntityInfo(parseInfo, viewSchema, user);
|
||||
DataSetSchema dataSetSchema =
|
||||
schemaService.getSemanticSchema().getDataSetSchemaMap().get(parseInfo.getDataSetId());
|
||||
return semanticService.getEntityInfo(parseInfo, dataSetSchema, user);
|
||||
}
|
||||
|
||||
private void updateDateInfo(QueryDataReq queryData, SemanticParseInfo parseInfo,
|
||||
@@ -641,10 +641,10 @@ public class QueryServiceImpl implements QueryService {
|
||||
SemanticService semanticService = ContextUtils.getBean(SemanticService.class);
|
||||
SemanticSchema semanticSchema = semanticService.getSemanticSchema();
|
||||
SchemaElement schemaElement = semanticSchema.getDimension(dimensionValueReq.getElementID());
|
||||
Set<Long> detectViewIds = new HashSet<>();
|
||||
detectViewIds.add(schemaElement.getView());
|
||||
dimensionValueReq.setModelId(schemaElement.getView());
|
||||
List<String> dimensionValues = getDimensionValues(dimensionValueReq, detectViewIds);
|
||||
Set<Long> detectDataSetIds = new HashSet<>();
|
||||
detectDataSetIds.add(schemaElement.getDataSet());
|
||||
dimensionValueReq.setModelId(schemaElement.getDataSet());
|
||||
List<String> dimensionValues = getDimensionValues(dimensionValueReq, detectDataSetIds);
|
||||
// if the search results is null,search dimensionValue from database
|
||||
if (CollectionUtils.isEmpty(dimensionValues)) {
|
||||
semanticQueryResp = queryDatabase(dimensionValueReq, user);
|
||||
@@ -668,14 +668,14 @@ public class QueryServiceImpl implements QueryService {
|
||||
return semanticQueryResp;
|
||||
}
|
||||
|
||||
private List<String> getDimensionValues(DimensionValueReq dimensionValueReq, Set<Long> viewIds) {
|
||||
private List<String> getDimensionValues(DimensionValueReq dimensionValueReq, Set<Long> dataSetIds) {
|
||||
//if value is null ,then search from NATURE_TO_VALUES
|
||||
if (StringUtils.isBlank(dimensionValueReq.getValue())) {
|
||||
return SearchService.getDimensionValue(dimensionValueReq);
|
||||
}
|
||||
//search from prefixSearch
|
||||
List<HanlpMapResult> hanlpMapResultList = knowledgeService.prefixSearch(dimensionValueReq.getValue(),
|
||||
2000, viewIds);
|
||||
2000, dataSetIds);
|
||||
HanlpHelper.transLetterOriginal(hanlpMapResultList);
|
||||
return hanlpMapResultList.stream()
|
||||
.filter(o -> {
|
||||
@@ -700,7 +700,7 @@ public class QueryServiceImpl implements QueryService {
|
||||
dateConf.setPeriod("DAY");
|
||||
queryStructReq.setDateInfo(dateConf);
|
||||
queryStructReq.setLimit(20L);
|
||||
queryStructReq.setViewId(dimensionValueReq.getModelId());
|
||||
queryStructReq.setDataSetId(dimensionValueReq.getModelId());
|
||||
queryStructReq.setQueryType(QueryType.ID);
|
||||
List<String> groups = new ArrayList<>();
|
||||
groups.add(dimensionValueReq.getBizName());
|
||||
|
||||
@@ -4,7 +4,7 @@ package com.tencent.supersonic.chat.server.service.impl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.pojo.RelatedSchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigFilter;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.RecommendReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp;
|
||||
@@ -48,7 +48,7 @@ public class RecommendServiceImpl implements RecommendService {
|
||||
if (Objects.isNull(modelId)) {
|
||||
return new RecommendResp();
|
||||
}
|
||||
ViewSchema modelSchema = semanticService.getViewSchema(modelId);
|
||||
DataSetSchema modelSchema = semanticService.getDataSetSchema(modelId);
|
||||
if (Objects.isNull(modelSchema)) {
|
||||
return new RecommendResp();
|
||||
}
|
||||
@@ -80,7 +80,7 @@ public class RecommendServiceImpl implements RecommendService {
|
||||
.limit(limit)
|
||||
.map(dimSchemaDesc -> {
|
||||
SchemaElement item = new SchemaElement();
|
||||
item.setView(modelId);
|
||||
item.setDataSet(modelId);
|
||||
item.setName(dimSchemaDesc.getName());
|
||||
item.setBizName(dimSchemaDesc.getBizName());
|
||||
item.setId(dimSchemaDesc.getId());
|
||||
@@ -94,7 +94,7 @@ public class RecommendServiceImpl implements RecommendService {
|
||||
.limit(limit)
|
||||
.map(metricSchemaDesc -> {
|
||||
SchemaElement item = new SchemaElement();
|
||||
item.setView(modelId);
|
||||
item.setDataSet(modelId);
|
||||
item.setName(metricSchemaDesc.getName());
|
||||
item.setBizName(metricSchemaDesc.getBizName());
|
||||
item.setId(metricSchemaDesc.getId());
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.tencent.supersonic.chat.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.chat.core.query.semantic.SemanticInterpreter;
|
||||
import com.tencent.supersonic.chat.core.utils.ComponentFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -28,13 +28,13 @@ public class SchemaService {
|
||||
@Override
|
||||
public SemanticSchema load(String key) {
|
||||
log.info("load getDomainSchemaInfo cache [{}]", key);
|
||||
return new SemanticSchema(semanticInterpreter.getViewSchema());
|
||||
return new SemanticSchema(semanticInterpreter.getDataSetSchema());
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
public ViewSchema getViewSchema(Long id) {
|
||||
return semanticInterpreter.getViewSchema(id, true);
|
||||
public DataSetSchema getDataSetSchema(Long id) {
|
||||
return semanticInterpreter.getDataSetSchema(id, true);
|
||||
}
|
||||
|
||||
public SemanticSchema getSemanticSchema() {
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.tencent.supersonic.chat.core.agent.Agent;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.S2Term;
|
||||
import com.tencent.supersonic.headless.core.knowledge.DictWord;
|
||||
import com.tencent.supersonic.headless.core.knowledge.HanlpMapResult;
|
||||
import com.tencent.supersonic.headless.core.knowledge.ViewInfoStat;
|
||||
import com.tencent.supersonic.headless.core.knowledge.DataSetInfoStat;
|
||||
import com.tencent.supersonic.chat.core.mapper.MapperHelper;
|
||||
import com.tencent.supersonic.chat.core.mapper.MatchText;
|
||||
import com.tencent.supersonic.chat.core.mapper.ModelWithSemanticType;
|
||||
@@ -91,18 +91,19 @@ public class SearchServiceImpl implements SearchService {
|
||||
// 2.get meta info
|
||||
SemanticSchema semanticSchemaDb = schemaService.getSemanticSchema();
|
||||
List<SchemaElement> metricsDb = semanticSchemaDb.getMetrics();
|
||||
final Map<Long, String> modelToName = semanticSchemaDb.getViewIdToName();
|
||||
final Map<Long, String> modelToName = semanticSchemaDb.getDataSetIdToName();
|
||||
|
||||
// 3.detect by segment
|
||||
List<S2Term> originals = knowledgeService.getTerms(queryText);
|
||||
log.info("hanlp parse result: {}", originals);
|
||||
MapperHelper mapperHelper = ContextUtils.getBean(MapperHelper.class);
|
||||
Set<Long> detectViewIds = mapperHelper.getViewIds(queryReq.getViewId(), agentService.getAgent(agentId));
|
||||
Set<Long> detectDataSetIds = mapperHelper.getDataSetIds(queryReq.getDataSetId(),
|
||||
agentService.getAgent(agentId));
|
||||
|
||||
QueryContext queryContext = new QueryContext();
|
||||
BeanUtils.copyProperties(queryReq, queryContext);
|
||||
Map<MatchText, List<HanlpMapResult>> regTextMap =
|
||||
searchMatchStrategy.match(queryContext, originals, detectViewIds);
|
||||
searchMatchStrategy.match(queryContext, originals, detectDataSetIds);
|
||||
regTextMap.entrySet().stream().forEach(m -> HanlpHelper.transLetterOriginal(m.getValue()));
|
||||
|
||||
// 4.get the most matching data
|
||||
@@ -121,9 +122,9 @@ public class SearchServiceImpl implements SearchService {
|
||||
log.info("searchTextEntry:{},queryReq:{}", searchTextEntry, queryReq);
|
||||
|
||||
Set<SearchResult> searchResults = new LinkedHashSet();
|
||||
ViewInfoStat modelStat = NatureHelper.getViewStat(originals);
|
||||
DataSetInfoStat modelStat = NatureHelper.getDataSetStat(originals);
|
||||
|
||||
List<Long> possibleModels = getPossibleModels(queryReq, originals, modelStat, queryReq.getViewId());
|
||||
List<Long> possibleModels = getPossibleModels(queryReq, originals, modelStat, queryReq.getDataSetId());
|
||||
|
||||
// 5.1 priority dimension metric
|
||||
boolean existMetricAndDimension = searchMetricAndDimension(new HashSet<>(possibleModels), modelToName,
|
||||
@@ -137,7 +138,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
for (Map.Entry<String, String> natureToNameEntry : natureToNameMap.entrySet()) {
|
||||
|
||||
Set<SearchResult> searchResultSet = searchDimensionValue(metricsDb, modelToName,
|
||||
modelStat.getMetricViewCount(), existMetricAndDimension,
|
||||
modelStat.getMetricDataSetCount(), existMetricAndDimension,
|
||||
matchText, natureToNameMap, natureToNameEntry, queryReq.getQueryFilters());
|
||||
|
||||
searchResults.addAll(searchResultSet);
|
||||
@@ -146,7 +147,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
}
|
||||
|
||||
private List<Long> getPossibleModels(QueryReq queryCtx, List<S2Term> originals,
|
||||
ViewInfoStat modelStat, Long webModelId) {
|
||||
DataSetInfoStat modelStat, Long webModelId) {
|
||||
|
||||
if (Objects.nonNull(webModelId) && webModelId > 0) {
|
||||
List<Long> result = new ArrayList<>();
|
||||
@@ -154,7 +155,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
return result;
|
||||
}
|
||||
|
||||
List<Long> possibleModels = NatureHelper.selectPossibleViews(originals);
|
||||
List<Long> possibleModels = NatureHelper.selectPossibleDataSets(originals);
|
||||
|
||||
Long contextModel = chatService.getContextModel(queryCtx.getChatId());
|
||||
|
||||
@@ -167,9 +168,9 @@ public class SearchServiceImpl implements SearchService {
|
||||
return possibleModels;
|
||||
}
|
||||
|
||||
private boolean nothingOrOnlyMetric(ViewInfoStat modelStat) {
|
||||
return modelStat.getMetricViewCount() >= 0 && modelStat.getDimensionViewCount() <= 0
|
||||
&& modelStat.getDimensionValueViewCount() <= 0 && modelStat.getViewCount() <= 0;
|
||||
private boolean nothingOrOnlyMetric(DataSetInfoStat modelStat) {
|
||||
return modelStat.getMetricDataSetCount() >= 0 && modelStat.getDimensionDataSetCount() <= 0
|
||||
&& modelStat.getDimensionValueDataSetCount() <= 0 && modelStat.getDataSetCount() <= 0;
|
||||
}
|
||||
|
||||
private boolean effectiveModel(Long contextModel) {
|
||||
@@ -189,7 +190,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
String nature = natureToNameEntry.getKey();
|
||||
String wordName = natureToNameEntry.getValue();
|
||||
|
||||
Long modelId = NatureHelper.getViewId(nature);
|
||||
Long modelId = NatureHelper.getDataSetId(nature);
|
||||
SchemaElementType schemaElementType = NatureHelper.convertToElementType(nature);
|
||||
|
||||
if (SchemaElementType.ENTITY.equals(schemaElementType)) {
|
||||
@@ -266,7 +267,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return metricsDb.stream()
|
||||
.filter(mapDO -> Objects.nonNull(mapDO) && model.equals(mapDO.getView()))
|
||||
.filter(mapDO -> Objects.nonNull(mapDO) && model.equals(mapDO.getDataSet()))
|
||||
.sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed())
|
||||
.flatMap(entry -> {
|
||||
List<String> result = new ArrayList<>();
|
||||
@@ -290,7 +291,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
if (CollectionUtils.isEmpty(possibleModels)) {
|
||||
return true;
|
||||
}
|
||||
Long model = NatureHelper.getViewId(nature);
|
||||
Long model = NatureHelper.getDataSetId(nature);
|
||||
return possibleModels.contains(model);
|
||||
})
|
||||
.map(nature -> {
|
||||
@@ -313,7 +314,7 @@ public class SearchServiceImpl implements SearchService {
|
||||
for (HanlpMapResult hanlpMapResult : hanlpMapResults) {
|
||||
|
||||
List<ModelWithSemanticType> dimensionMetricClassIds = hanlpMapResult.getNatures().stream()
|
||||
.map(nature -> new ModelWithSemanticType(NatureHelper.getViewId(nature),
|
||||
.map(nature -> new ModelWithSemanticType(NatureHelper.getDataSetId(nature),
|
||||
NatureHelper.convertToElementType(nature)))
|
||||
.filter(entry -> matchCondition(entry, possibleModels)).collect(Collectors.toList());
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class WordService {
|
||||
|
||||
public List<DictWord> getAllDictWords() {
|
||||
SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
|
||||
SemanticSchema semanticSchema = new SemanticSchema(semanticInterpreter.getViewSchema());
|
||||
SemanticSchema semanticSchema = new SemanticSchema(semanticInterpreter.getDataSetSchema());
|
||||
|
||||
List<DictWord> words = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.tencent.supersonic.chat.server.util;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.ADMIN_LOWER;
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.chat.api.pojo.ViewSchema;
|
||||
import com.tencent.supersonic.chat.api.pojo.DataSetSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatAggConfigReq;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigBaseReq;
|
||||
@@ -56,7 +56,7 @@ public class ChatConfigHelper {
|
||||
return chatConfig;
|
||||
}
|
||||
|
||||
public List<Long> generateAllDimIdList(ViewSchema modelSchema) {
|
||||
public List<Long> generateAllDimIdList(DataSetSchema modelSchema) {
|
||||
if (Objects.isNull(modelSchema) || CollectionUtils.isEmpty(modelSchema.getDimensions())) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
@@ -65,7 +65,7 @@ public class ChatConfigHelper {
|
||||
return new ArrayList<>(dimIdAndDescPair.keySet());
|
||||
}
|
||||
|
||||
public List<Long> generateAllMetricIdList(ViewSchema modelSchema) {
|
||||
public List<Long> generateAllMetricIdList(DataSetSchema modelSchema) {
|
||||
if (Objects.isNull(modelSchema) || CollectionUtils.isEmpty(modelSchema.getMetrics())) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@ class QueryReqBuilderTest {
|
||||
void buildS2SQLReq() {
|
||||
init();
|
||||
QueryStructReq queryStructReq = new QueryStructReq();
|
||||
queryStructReq.setViewId(1L);
|
||||
queryStructReq.setViewName("内容库");
|
||||
queryStructReq.setDataSetId(1L);
|
||||
queryStructReq.setDataSetName("内容库");
|
||||
queryStructReq.setQueryType(QueryType.METRIC);
|
||||
|
||||
Aggregator aggregator = new Aggregator();
|
||||
|
||||
Reference in New Issue
Block a user