From efd617b2e5bf98de4dded9183db5aba229a3c66b Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Mon, 8 Jul 2024 10:20:20 +0800 Subject: [PATCH] (improvement)(headless)Rename QueryTextReq to QueryNLReq to explicitly reflect `natural language` concept. --- .../chat/server/parser/NL2SQLParser.java | 20 ++++----- .../chat/server/rest/ChatQueryController.java | 4 +- .../server/service/impl/ChatServiceImpl.java | 10 ++--- .../chat/server/util/QueryReqConverter.java | 30 ++++++------- .../{QueryTextReq.java => QueryNLReq.java} | 2 +- .../headless/chat/parser/llm/ParseResult.java | 4 +- .../facade/rest/ChatQueryApiController.java | 20 ++++----- .../facade/service/ChatQueryService.java | 8 ++-- .../facade/service/RetrieveService.java | 4 +- .../service/impl/ChatQueryServiceImpl.java | 43 +++++++++---------- .../service/impl/RetrieveServiceImpl.java | 18 ++++---- ...erTest.java => QueryNLReqBuilderTest.java} | 4 +- 12 files changed, 83 insertions(+), 84 deletions(-) rename headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/{QueryTextReq.java => QueryNLReq.java} (97%) rename headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/{QueryTextReqBuilderTest.java => QueryNLReqBuilderTest.java} (98%) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java index d438098f1..c5d4534db 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java @@ -15,7 +15,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.MapResp; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.server.facade.service.ChatQueryService; @@ -69,11 +69,11 @@ public class NL2SQLParser implements ChatParser { } processMultiTurn(chatParseContext); - QueryTextReq queryTextReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); - addDynamicExemplars(chatParseContext.getAgent().getId(), queryTextReq); + QueryNLReq queryNLReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); + addDynamicExemplars(chatParseContext.getAgent().getId(), queryNLReq); ChatQueryService chatQueryService = ContextUtils.getBean(ChatQueryService.class); - ParseResp text2SqlParseResp = chatQueryService.performParsing(queryTextReq); + ParseResp text2SqlParseResp = chatQueryService.performParsing(queryNLReq); if (!ParseResp.ParseState.FAILED.equals(text2SqlParseResp.getState())) { parseResp.getSelectedParses().addAll(text2SqlParseResp.getSelectedParses()); } @@ -149,8 +149,8 @@ public class NL2SQLParser implements ChatParser { // derive mapping result of current question and parsing result of last question. ChatQueryService chatQueryService = ContextUtils.getBean(ChatQueryService.class); - QueryTextReq queryTextReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); - MapResp currentMapResult = chatQueryService.performMapping(queryTextReq); + QueryNLReq queryNLReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); + MapResp currentMapResult = chatQueryService.performMapping(queryNLReq); List historyParseResults = getHistoryParseResult(chatParseContext.getChatId(), 1); if (historyParseResults.size() == 0) { @@ -168,7 +168,7 @@ public class NL2SQLParser implements ChatParser { .curtSchema(curtMapStr) .histSchema(histMapStr) .histSQL(histSQL) - .modelConfig(queryTextReq.getModelConfig()) + .modelConfig(queryNLReq.getModelConfig()) .build()); chatParseContext.setQueryText(rewrittenQuery); log.info("Last Query: {} Current Query: {}, Rewritten Query: {}", @@ -225,13 +225,13 @@ public class NL2SQLParser implements ChatParser { return contextualList; } - private void addDynamicExemplars(Integer agentId, QueryTextReq queryTextReq) { + private void addDynamicExemplars(Integer agentId, QueryNLReq queryNLReq) { ExemplarServiceImpl exemplarManager = ContextUtils.getBean(ExemplarServiceImpl.class); EmbeddingConfig embeddingConfig = ContextUtils.getBean(EmbeddingConfig.class); String memoryCollectionName = embeddingConfig.getMemoryCollectionName(agentId); List exemplars = exemplarManager.recallExemplars(memoryCollectionName, - queryTextReq.getQueryText(), 5); - queryTextReq.getDynamicExemplars().addAll(exemplars); + queryNLReq.getQueryText(), 5); + queryNLReq.getDynamicExemplars().addAll(exemplars); } @Builder diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatQueryController.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatQueryController.java index a900b7d99..3c11948d6 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatQueryController.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatQueryController.java @@ -10,7 +10,7 @@ import com.tencent.supersonic.chat.server.service.ChatService; import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; @@ -76,7 +76,7 @@ public class ChatQueryController { } @PostMapping("queryContext") - public Object queryContext(@RequestBody QueryTextReq queryCtx, + public Object queryContext(@RequestBody QueryNLReq queryCtx, HttpServletRequest request, HttpServletResponse response) { queryCtx.setUser(UserHolder.findUser(request, response)); return chatService.queryContext(queryCtx.getChatId()); diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatServiceImpl.java index 2c739dd0a..2c95374a1 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatServiceImpl.java @@ -21,7 +21,7 @@ import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.headless.api.pojo.request.QueryDataReq; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.MapResp; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; @@ -60,8 +60,8 @@ public class ChatServiceImpl implements ChatService { if (!agent.enableSearch()) { return Lists.newArrayList(); } - QueryTextReq queryTextReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); - return retrieveService.retrieve(queryTextReq); + QueryNLReq queryNLReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); + return retrieveService.retrieve(queryNLReq); } @Override @@ -137,8 +137,8 @@ public class ChatServiceImpl implements ChatService { } private void supplyMapInfo(ChatParseContext chatParseContext) { - QueryTextReq queryTextReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); - MapResp mapResp = chatQueryService.performMapping(queryTextReq); + QueryNLReq queryNLReq = QueryReqConverter.buildText2SqlQueryReq(chatParseContext); + MapResp mapResp = chatQueryService.performMapping(queryNLReq); chatParseContext.setMapInfo(mapResp.getMapInfo()); } diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/util/QueryReqConverter.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/util/QueryReqConverter.java index 8cb1484c0..62b674b19 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/util/QueryReqConverter.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/util/QueryReqConverter.java @@ -4,35 +4,35 @@ import com.tencent.supersonic.chat.server.agent.Agent; import com.tencent.supersonic.chat.server.pojo.ChatParseContext; import com.tencent.supersonic.common.pojo.enums.Text2SQLType; import com.tencent.supersonic.common.util.BeanMapper; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import org.apache.commons.collections.MapUtils; import java.util.Objects; public class QueryReqConverter { - public static QueryTextReq buildText2SqlQueryReq(ChatParseContext chatParseContext) { - QueryTextReq queryTextReq = new QueryTextReq(); - BeanMapper.mapper(chatParseContext, queryTextReq); + public static QueryNLReq buildText2SqlQueryReq(ChatParseContext chatParseContext) { + QueryNLReq queryNLReq = new QueryNLReq(); + BeanMapper.mapper(chatParseContext, queryNLReq); Agent agent = chatParseContext.getAgent(); if (agent == null) { - return queryTextReq; + return queryNLReq; } if (agent.containsLLMParserTool() && agent.containsRuleTool()) { - queryTextReq.setText2SQLType(Text2SQLType.RULE_AND_LLM); + queryNLReq.setText2SQLType(Text2SQLType.RULE_AND_LLM); } else if (agent.containsLLMParserTool()) { - queryTextReq.setText2SQLType(Text2SQLType.ONLY_LLM); + queryNLReq.setText2SQLType(Text2SQLType.ONLY_LLM); } else if (agent.containsRuleTool()) { - queryTextReq.setText2SQLType(Text2SQLType.ONLY_RULE); + queryNLReq.setText2SQLType(Text2SQLType.ONLY_RULE); } - queryTextReq.setDataSetIds(agent.getDataSetIds()); - if (Objects.nonNull(queryTextReq.getMapInfo()) - && MapUtils.isNotEmpty(queryTextReq.getMapInfo().getDataSetElementMatches())) { - queryTextReq.setMapInfo(queryTextReq.getMapInfo()); + queryNLReq.setDataSetIds(agent.getDataSetIds()); + if (Objects.nonNull(queryNLReq.getMapInfo()) + && MapUtils.isNotEmpty(queryNLReq.getMapInfo().getDataSetElementMatches())) { + queryNLReq.setMapInfo(queryNLReq.getMapInfo()); } - queryTextReq.setModelConfig(agent.getModelConfig()); - queryTextReq.setPromptConfig(agent.getPromptConfig()); - return queryTextReq; + queryNLReq.setModelConfig(agent.getModelConfig()); + queryNLReq.setPromptConfig(agent.getPromptConfig()); + return queryNLReq; } } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryTextReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryNLReq.java similarity index 97% rename from headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryTextReq.java rename to headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryNLReq.java index ca8851141..af2824f91 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryTextReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/QueryNLReq.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.Set; @Data -public class QueryTextReq { +public class QueryNLReq { private String queryText; private Integer chatId; private Set dataSetIds = Sets.newHashSet(); diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java index ddb1ea5a7..70b045fcb 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import lombok.AllArgsConstructor; @@ -22,7 +22,7 @@ public class ParseResult { private LLMResp llmResp; - private QueryTextReq request; + private QueryNLReq request; private List linkingValues; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/rest/ChatQueryApiController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/rest/ChatQueryApiController.java index ad44169e8..ccbaeb71a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/rest/ChatQueryApiController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/rest/ChatQueryApiController.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.headless.server.facade.rest; import com.tencent.supersonic.auth.api.authentication.utils.UserHolder; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.MapResp; import com.tencent.supersonic.headless.server.facade.service.ChatQueryService; import com.tencent.supersonic.headless.server.facade.service.RetrieveService; @@ -26,27 +26,27 @@ public class ChatQueryApiController { private RetrieveService retrieveService; @PostMapping("/chat/search") - public Object search(@RequestBody QueryTextReq queryTextReq, + public Object search(@RequestBody QueryNLReq queryNLReq, HttpServletRequest request, HttpServletResponse response) throws Exception { - queryTextReq.setUser(UserHolder.findUser(request, response)); - return retrieveService.retrieve(queryTextReq); + queryNLReq.setUser(UserHolder.findUser(request, response)); + return retrieveService.retrieve(queryNLReq); } @PostMapping("/chat/map") - public MapResp map(@RequestBody QueryTextReq queryTextReq, + public MapResp map(@RequestBody QueryNLReq queryNLReq, HttpServletRequest request, HttpServletResponse response) { - queryTextReq.setUser(UserHolder.findUser(request, response)); - return chatQueryService.performMapping(queryTextReq); + queryNLReq.setUser(UserHolder.findUser(request, response)); + return chatQueryService.performMapping(queryNLReq); } @PostMapping("/chat/parse") - public Object parse(@RequestBody QueryTextReq queryTextReq, + public Object parse(@RequestBody QueryNLReq queryNLReq, HttpServletRequest request, HttpServletResponse response) throws Exception { - queryTextReq.setUser(UserHolder.findUser(request, response)); - return chatQueryService.performParsing(queryTextReq); + queryNLReq.setUser(UserHolder.findUser(request, response)); + return chatQueryService.performParsing(queryNLReq); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/ChatQueryService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/ChatQueryService.java index 236c2506b..4dbeee0dd 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/ChatQueryService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/ChatQueryService.java @@ -7,23 +7,23 @@ import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.headless.api.pojo.request.ExecuteQueryReq; import com.tencent.supersonic.headless.api.pojo.request.QueryDataReq; import com.tencent.supersonic.headless.api.pojo.request.QueryMapReq; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.response.MapInfoResp; import com.tencent.supersonic.headless.api.pojo.response.MapResp; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; -/*** +/***dd * SemanticLayerService for query and search */ public interface ChatQueryService { - MapResp performMapping(QueryTextReq queryTextReq); + MapResp performMapping(QueryNLReq queryNLReq); MapInfoResp map(QueryMapReq queryMapReq); - ParseResp performParsing(QueryTextReq queryTextReq); + ParseResp performParsing(QueryNLReq queryNLReq); @Deprecated QueryResult performExecution(ExecuteQueryReq queryReq) throws Exception; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/RetrieveService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/RetrieveService.java index 0da9dc203..f0cd8b8db 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/RetrieveService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/RetrieveService.java @@ -1,12 +1,12 @@ package com.tencent.supersonic.headless.server.facade.service; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.SearchResult; import java.util.List; public interface RetrieveService { - List retrieve(QueryTextReq queryCtx); + List retrieve(QueryNLReq queryCtx); } \ No newline at end of file diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/ChatQueryServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/ChatQueryServiceImpl.java index 962b69904..94a21b8cf 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/ChatQueryServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/ChatQueryServiceImpl.java @@ -29,7 +29,7 @@ import com.tencent.supersonic.headless.api.pojo.enums.CostType; import com.tencent.supersonic.headless.api.pojo.enums.QueryMethod; import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; import com.tencent.supersonic.headless.api.pojo.request.ExecuteQueryReq; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.request.TranslateSqlReq; import com.tencent.supersonic.headless.api.pojo.request.QueryDataReq; import com.tencent.supersonic.headless.api.pojo.request.QueryDimValueReq; @@ -118,40 +118,40 @@ public class ChatQueryServiceImpl implements ChatQueryService { private ChatWorkflowEngine chatWorkflowEngine; @Override - public MapResp performMapping(QueryTextReq queryTextReq) { + public MapResp performMapping(QueryNLReq queryNLReq) { MapResp mapResp = new MapResp(); - ChatQueryContext queryCtx = buildQueryContext(queryTextReq); + ChatQueryContext queryCtx = buildChatQueryContext(queryNLReq); ComponentFactory.getSchemaMappers().forEach(mapper -> { mapper.map(queryCtx); }); SchemaMapInfo mapInfo = queryCtx.getMapInfo(); mapResp.setMapInfo(mapInfo); - mapResp.setQueryText(queryTextReq.getQueryText()); + mapResp.setQueryText(queryNLReq.getQueryText()); return mapResp; } @Override public MapInfoResp map(QueryMapReq queryMapReq) { - QueryTextReq queryTextReq = new QueryTextReq(); - BeanUtils.copyProperties(queryMapReq, queryTextReq); + QueryNLReq queryNLReq = new QueryNLReq(); + BeanUtils.copyProperties(queryMapReq, queryNLReq); List dataSets = dataSetService.getDataSets(queryMapReq.getDataSetNames(), queryMapReq.getUser()); Set dataSetIds = dataSets.stream().map(SchemaItem::getId).collect(Collectors.toSet()); - queryTextReq.setDataSetIds(dataSetIds); - MapResp mapResp = performMapping(queryTextReq); + queryNLReq.setDataSetIds(dataSetIds); + MapResp mapResp = performMapping(queryNLReq); dataSetIds.retainAll(mapResp.getMapInfo().getDataSetElementMatches().keySet()); return convert(mapResp, queryMapReq.getTopN(), dataSetIds); } @Override - public ParseResp performParsing(QueryTextReq queryTextReq) { - ParseResp parseResult = new ParseResp(queryTextReq.getChatId(), queryTextReq.getQueryText()); + public ParseResp performParsing(QueryNLReq queryNLReq) { + ParseResp parseResult = new ParseResp(queryNLReq.getChatId(), queryNLReq.getQueryText()); // build queryContext and chatContext - ChatQueryContext queryCtx = buildQueryContext(queryTextReq); + ChatQueryContext queryCtx = buildChatQueryContext(queryNLReq); // in order to support multi-turn conversation, chat context is needed - ChatContext chatCtx = chatContextService.getOrCreateContext(queryTextReq.getChatId()); + ChatContext chatCtx = chatContextService.getOrCreateContext(queryNLReq.getChatId()); chatWorkflowEngine.execute(queryCtx, chatCtx, parseResult); @@ -161,21 +161,20 @@ public class ChatQueryServiceImpl implements ChatQueryService { return parseResult; } - public ChatQueryContext buildQueryContext(QueryTextReq queryTextReq) { - + public ChatQueryContext buildChatQueryContext(QueryNLReq queryNLReq) { SemanticSchema semanticSchema = schemaService.getSemanticSchema(); Map> modelIdToDataSetIds = dataSetService.getModelIdToDataSetIds(); ChatQueryContext queryCtx = ChatQueryContext.builder() - .queryFilters(queryTextReq.getQueryFilters()) + .queryFilters(queryNLReq.getQueryFilters()) .semanticSchema(semanticSchema) .candidateQueries(new ArrayList<>()) .mapInfo(new SchemaMapInfo()) .modelIdToDataSetIds(modelIdToDataSetIds) - .text2SQLType(queryTextReq.getText2SQLType()) - .mapModeEnum(queryTextReq.getMapModeEnum()) - .dataSetIds(queryTextReq.getDataSetIds()) + .text2SQLType(queryNLReq.getText2SQLType()) + .mapModeEnum(queryNLReq.getMapModeEnum()) + .dataSetIds(queryNLReq.getDataSetIds()) .build(); - BeanUtils.copyProperties(queryTextReq, queryCtx); + BeanUtils.copyProperties(queryNLReq, queryCtx); return queryCtx; } @@ -278,9 +277,9 @@ public class ChatQueryServiceImpl implements ChatQueryService { validFilter(semanticQuery.getParseInfo().getMetricFilters()); //init s2sql semanticQuery.initS2Sql(semanticSchema, user); - QueryTextReq queryTextReq = new QueryTextReq(); - queryTextReq.setQueryFilters(new QueryFilters()); - queryTextReq.setUser(user); + QueryNLReq queryNLReq = new QueryNLReq(); + queryNLReq.setQueryFilters(new QueryFilters()); + queryNLReq.setUser(user); } SemanticQueryReq semanticQueryReq = semanticQuery.buildSemanticQueryReq(); QueryResult queryResult = doExecution(semanticQueryReq, semanticQuery.getParseInfo(), user); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/RetrieveServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/RetrieveServiceImpl.java index 3badfebc9..e3a314b60 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/RetrieveServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/facade/service/impl/RetrieveServiceImpl.java @@ -8,7 +8,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.request.QueryFilters; -import com.tencent.supersonic.headless.api.pojo.request.QueryTextReq; +import com.tencent.supersonic.headless.api.pojo.request.QueryNLReq; import com.tencent.supersonic.headless.api.pojo.response.S2Term; import com.tencent.supersonic.headless.api.pojo.response.SearchResult; import com.tencent.supersonic.headless.chat.ChatQueryContext; @@ -64,9 +64,9 @@ public class RetrieveServiceImpl implements RetrieveService { @Autowired private SearchMatchStrategy searchMatchStrategy; @Override - public List retrieve(QueryTextReq queryTextReq) { + public List retrieve(QueryNLReq queryNLReq) { - String queryText = queryTextReq.getQueryText(); + String queryText = queryNLReq.getQueryText(); // 1.get meta info SemanticSchema semanticSchemaDb = schemaService.getSemanticSchema(); List metricsDb = semanticSchemaDb.getMetrics(); @@ -76,10 +76,10 @@ public class RetrieveServiceImpl implements RetrieveService { // 2.detect by segment List originals = knowledgeBaseService.getTerms(queryText, modelIdToDataSetIds); log.debug("hanlp parse result: {}", originals); - Set dataSetIds = queryTextReq.getDataSetIds(); + Set dataSetIds = queryNLReq.getDataSetIds(); ChatQueryContext chatQueryContext = new ChatQueryContext(); - BeanUtils.copyProperties(queryTextReq, chatQueryContext); + BeanUtils.copyProperties(queryNLReq, chatQueryContext); chatQueryContext.setModelIdToDataSetIds(dataSetService.getModelIdToDataSetIds()); Map> regTextMap = @@ -100,12 +100,12 @@ public class RetrieveServiceImpl implements RetrieveService { return Lists.newArrayList(); } Map.Entry> searchTextEntry = mostSimilarSearchResult.get(); - log.debug("searchTextEntry:{},queryTextReq:{}", searchTextEntry, queryTextReq); + log.debug("searchTextEntry:{},queryNLReq:{}", searchTextEntry, queryNLReq); Set searchResults = new LinkedHashSet(); DataSetInfoStat dataSetInfoStat = NatureHelper.getDataSetStat(originals); - List possibleDataSets = getPossibleDataSets(queryTextReq, originals, dataSetInfoStat, dataSetIds); + List possibleDataSets = getPossibleDataSets(queryNLReq, originals, dataSetInfoStat, dataSetIds); // 5.1 priority dimension metric boolean existMetricAndDimension = searchMetricAndDimension(new HashSet<>(possibleDataSets), dataSetIdToName, @@ -120,14 +120,14 @@ public class RetrieveServiceImpl implements RetrieveService { Set searchResultSet = searchDimensionValue(metricsDb, dataSetIdToName, dataSetInfoStat.getMetricDataSetCount(), existMetricAndDimension, - matchText, natureToNameMap, natureToNameEntry, queryTextReq.getQueryFilters()); + matchText, natureToNameMap, natureToNameEntry, queryNLReq.getQueryFilters()); searchResults.addAll(searchResultSet); } return searchResults.stream().limit(RESULT_SIZE).collect(Collectors.toList()); } - private List getPossibleDataSets(QueryTextReq queryCtx, List originals, + private List getPossibleDataSets(QueryNLReq queryCtx, List originals, DataSetInfoStat dataSetInfoStat, Set dataSetIds) { if (CollectionUtils.isNotEmpty(dataSetIds)) { return new ArrayList<>(dataSetIds); diff --git a/headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryTextReqBuilderTest.java b/headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryNLReqBuilderTest.java similarity index 98% rename from headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryTextReqBuilderTest.java rename to headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryNLReqBuilderTest.java index 32a14df2b..cb6cb5b8e 100644 --- a/headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryTextReqBuilderTest.java +++ b/headless/server/src/test/java/com/tencent/supersonic/headless/server/utils/QueryNLReqBuilderTest.java @@ -22,9 +22,9 @@ import java.util.Arrays; import java.util.List; /** - * QueryTextReqBuilderTest + * QueryNLReqBuilderTest */ -class QueryTextReqBuilderTest { +class QueryNLReqBuilderTest { @Test void buildS2SQLReq() {