mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 04:57:28 +00:00
(improvement)(launcher) Optimize the demo to prevent the dimension value dictionary from being loaded after the demo is loaded. (#1059)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -1,82 +0,0 @@
|
||||
package com.tencent.supersonic.headless.server.listener;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.core.chat.knowledge.DictWord;
|
||||
import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService;
|
||||
import com.tencent.supersonic.headless.server.service.impl.WordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Order(2)
|
||||
public class ApplicationStartedListener implements CommandLineRunner {
|
||||
|
||||
@Autowired
|
||||
private KnowledgeBaseService knowledgeBaseService;
|
||||
@Autowired
|
||||
private WordService wordService;
|
||||
|
||||
@Override
|
||||
public void run(String... args) {
|
||||
updateKnowledgeDimValue();
|
||||
}
|
||||
|
||||
public Boolean updateKnowledgeDimValue() {
|
||||
Boolean isOk = false;
|
||||
try {
|
||||
log.debug("ApplicationStartedInit start");
|
||||
|
||||
List<DictWord> dictWords = wordService.getAllDictWords();
|
||||
wordService.setPreDictWords(dictWords);
|
||||
knowledgeBaseService.reloadAllData(dictWords);
|
||||
|
||||
log.debug("ApplicationStartedInit end");
|
||||
isOk = true;
|
||||
} catch (Exception e) {
|
||||
log.error("ApplicationStartedInit error", e);
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
|
||||
public Boolean updateKnowledgeDimValueAsync() {
|
||||
CompletableFuture.supplyAsync(() -> {
|
||||
updateKnowledgeDimValue();
|
||||
return null;
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
/***
|
||||
* reload knowledge task
|
||||
*/
|
||||
@Scheduled(cron = "${reload.knowledge.corn:0 0/1 * * * ?}")
|
||||
public void reloadKnowledge() {
|
||||
log.debug("reloadKnowledge start");
|
||||
|
||||
try {
|
||||
List<DictWord> dictWords = wordService.getAllDictWords();
|
||||
List<DictWord> preDictWords = wordService.getPreDictWords();
|
||||
|
||||
if (CollectionUtils.isEqualCollection(dictWords, preDictWords)) {
|
||||
log.debug("dictWords has not changed, reloadKnowledge end");
|
||||
return;
|
||||
}
|
||||
log.info("dictWords has changed");
|
||||
wordService.setPreDictWords(dictWords);
|
||||
knowledgeBaseService.updateOnlineKnowledge(wordService.getAllDictWords());
|
||||
} catch (Exception e) {
|
||||
log.error("reloadKnowledge error", e);
|
||||
}
|
||||
|
||||
log.debug("reloadKnowledge end");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.tencent.supersonic.headless.server.listener;
|
||||
|
||||
import com.tencent.supersonic.headless.server.service.impl.DictWordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Order(2)
|
||||
public class DictWordLoadStartedListener implements CommandLineRunner {
|
||||
|
||||
@Autowired
|
||||
private DictWordService dictWordService;
|
||||
|
||||
@Override
|
||||
public void run(String... args) {
|
||||
updateKnowledgeDimValue();
|
||||
}
|
||||
|
||||
public void updateKnowledgeDimValue() {
|
||||
try {
|
||||
log.debug("ApplicationStartedInit start");
|
||||
dictWordService.loadDictWord();
|
||||
log.debug("ApplicationStartedInit end");
|
||||
} catch (Exception e) {
|
||||
log.error("ApplicationStartedInit error", e);
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* reload knowledge task
|
||||
*/
|
||||
@Scheduled(cron = "${reload.knowledge.corn:0 0/1 * * * ?}")
|
||||
public void reloadKnowledge() {
|
||||
log.debug("reloadKnowledge start");
|
||||
try {
|
||||
dictWordService.reloadDictWord();
|
||||
} catch (Exception e) {
|
||||
log.error("reloadKnowledge error", e);
|
||||
}
|
||||
log.debug("reloadKnowledge end");
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticSchema;
|
||||
import com.tencent.supersonic.headless.core.chat.knowledge.DictWord;
|
||||
import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService;
|
||||
import com.tencent.supersonic.headless.core.chat.knowledge.builder.WordBuilderFactory;
|
||||
import com.tencent.supersonic.headless.server.service.SchemaService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -20,13 +21,33 @@ import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class WordService {
|
||||
public class DictWordService {
|
||||
|
||||
@Autowired
|
||||
private SchemaService schemaService;
|
||||
@Autowired
|
||||
private KnowledgeBaseService knowledgeBaseService;
|
||||
|
||||
private List<DictWord> preDictWords = new ArrayList<>();
|
||||
|
||||
public void loadDictWord() {
|
||||
List<DictWord> dictWords = getAllDictWords();
|
||||
setPreDictWords(dictWords);
|
||||
knowledgeBaseService.reloadAllData(dictWords);
|
||||
}
|
||||
|
||||
public void reloadDictWord() {
|
||||
List<DictWord> dictWords = getAllDictWords();
|
||||
List<DictWord> preDictWords = getPreDictWords();
|
||||
if (org.apache.commons.collections.CollectionUtils.isEqualCollection(dictWords, preDictWords)) {
|
||||
log.debug("dictWords has not changed, reloadKnowledge end");
|
||||
return;
|
||||
}
|
||||
log.info("dictWords has changed");
|
||||
setPreDictWords(dictWords);
|
||||
knowledgeBaseService.updateOnlineKnowledge(getAllDictWords());
|
||||
}
|
||||
|
||||
public List<DictWord> getAllDictWords() {
|
||||
SemanticSchema semanticSchema = new SemanticSchema(schemaService.getDataSetSchema());
|
||||
|
||||
Reference in New Issue
Block a user