fuwencai 8 сар өмнө
parent
commit
ab140b0d11

+ 28 - 4
rpc/knowledge/internal/service/knowledgeService.go

@@ -83,7 +83,7 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 				logx.Error("es 保存失败")
 				return false, "es 保存失败"
 			}
-			questionVector, err := util.EncodeVector(param.Question)
+			questionVector, err := util.EncodeVector(keywords)
 			if err != nil {
 				logx.Error("获取 向量失败 ", err)
 				return false, "获取 向量失败 :" + err.Error()
@@ -94,6 +94,7 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
 				"mod_time":       time.Now().Unix(),
 				"answer":         param.Answer,
 				"question":       param.Question,
+				"keywords":       keywords,
 				"_id":            answerId,
 				"entId":          param.EntId,
 				"questionVector": questionVector,
@@ -168,7 +169,7 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
 		}
 		ok1 := elastic.Del(Index, Type, query)
 		ok2 := elastic.Save(Index, Type, newKnowledge)
-		questionVector, err := util.EncodeVector(param.Question)
+		questionVector, err := util.EncodeVector(keywords)
 		if err != nil {
 			log.Println("001 获取 向量失败 :" + err.Error())
 			return false
@@ -181,6 +182,7 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
 			"question":       param.Question,
 			"_id":            param.AnswerId,
 			"entId":          param.EntId,
+			"keywords":       keywords,
 			"questionVector": questionVector,
 		}
 		if !ESV7.Save(ESV7Index, ESV7Type, knowledgeV) {
@@ -261,7 +263,18 @@ func (k *KnowledgeService) FindAnswer(param *knowledgeclient.FindAnswerReq, addr
 	robotEntId := SE.Decode4Hex(param.RobotEntId)
 	//组装es query
 	//query := util.DSL4SmartResponse(param.Question, robotEntId, int(param.Type), addr, index, segment)
-	query := util.GetAnswerQueryStr(param.Question, robotEntId, 1, 0.01)
+	//问题进行分词
+	keywords := ""
+	keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
+	if len(keywordsArr) != 0 {
+		for _, val := range keywordsArr {
+			keywords += val + " "
+		}
+	}
+	if keywords == "" {
+		keywords = param.Question
+	}
+	query := util.GetAnswerQueryStr(keywords, robotEntId, 1, 0.01)
 	logx.Info("query:", query)
 	if query != "" {
 		res := ESV7.Get(ESV7Index, ESV7Type, query)
@@ -283,8 +296,19 @@ func (k *KnowledgeService) RecommendAnswer(param *knowledgeclient.FindAnswerReq,
 	if param.ReqSource == 1 {
 		limit = recommendQuestionCount
 	}
+	//问题进行分词
+	keywords := ""
+	keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
+	if len(keywordsArr) != 0 {
+		for _, val := range keywordsArr {
+			keywords += val + " "
+		}
+	}
+	if keywords == "" {
+		keywords = param.Question
+	}
 	for i := 0; i < len(ki.C.MinScore); i++ {
-		query := util.GetAnswerQueryStr(param.Question, param.RobotEntId, limit, ki.C.MinScore[i])
+		query := util.GetAnswerQueryStr(keywords, param.RobotEntId, limit, ki.C.MinScore[i])
 		logx.Info("query:", query)
 		res := ESV7.Get(ESV7Index, ESV7Type, query)
 		logx.Info("res:", res)