|
@@ -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)
|