|
@@ -10,7 +10,6 @@ import (
|
|
"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/util"
|
|
"bp.jydev.jianyu360.cn/SocialPlatform/knowledgeBase/rpc/knowledge/util"
|
|
"context"
|
|
"context"
|
|
"database/sql"
|
|
"database/sql"
|
|
- "errors"
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"log"
|
|
"log"
|
|
"strconv"
|
|
"strconv"
|
|
@@ -24,7 +23,7 @@ var (
|
|
Type = "smart"
|
|
Type = "smart"
|
|
)
|
|
)
|
|
|
|
|
|
-func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segment string) (bool, string, error) {
|
|
|
|
|
|
+func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segment string) (bool, string) {
|
|
//先查找知识库Id
|
|
//先查找知识库Id
|
|
query := map[string]interface{}{"status": 1, "appid": param.AppId, "ent_id": param.EntId}
|
|
query := map[string]interface{}{"status": 1, "appid": param.AppId, "ent_id": param.EntId}
|
|
datalist := Mysql.Find(util.KNOWLEDGE, query, "id", "", -1, -1)
|
|
datalist := Mysql.Find(util.KNOWLEDGE, query, "id", "", -1, -1)
|
|
@@ -48,9 +47,9 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
|
|
AppId: param.AppId,
|
|
AppId: param.AppId,
|
|
}
|
|
}
|
|
resp, err := UserCenterLib.GetEntUserInfo(context.Background(), req)
|
|
resp, err := UserCenterLib.GetEntUserInfo(context.Background(), req)
|
|
- if err != nil {
|
|
|
|
|
|
+ if resp.ErrorCode != 0 {
|
|
logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
|
|
logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
|
|
- return false, "查询用户中台创建人信息失败", err
|
|
|
|
|
|
+ return false, "查询用户中台创建人信息失败"
|
|
}
|
|
}
|
|
createPerson := resp.Data.Name
|
|
createPerson := resp.Data.Name
|
|
var answerId int64
|
|
var answerId int64
|
|
@@ -89,20 +88,15 @@ func (k *KnowledgeService) KnowledgeAdd(param *knowledgeclient.AddRequest, segme
|
|
"entId": param.EntId,
|
|
"entId": param.EntId,
|
|
}
|
|
}
|
|
b := elastic.Save(Index, Type, knowledge)
|
|
b := elastic.Save(Index, Type, knowledge)
|
|
- if b {
|
|
|
|
- return true, "插入es成功", nil
|
|
|
|
- } else {
|
|
|
|
- return false, "插入es出错", errors.New("插入es出错")
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- return false, "插入mysql出错", errors.New("插入mysql出错")
|
|
|
|
|
|
+ return b, ""
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- return false, "租户不存在", errors.New("租户不存在")
|
|
|
|
|
|
+ return fool, "插入mysql出错"
|
|
}
|
|
}
|
|
|
|
+ return false, "租户不存在"
|
|
}
|
|
}
|
|
|
|
|
|
-func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq, segment string) (ok bool, msg string, err error) {
|
|
|
|
|
|
+func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq, segment string) (ok bool) {
|
|
|
|
+ ok = false
|
|
//获取问题分词
|
|
//获取问题分词
|
|
keywords := ""
|
|
keywords := ""
|
|
keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
|
|
keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
|
|
@@ -121,11 +115,10 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
|
|
EntUserId: param.EntUserId,
|
|
EntUserId: param.EntUserId,
|
|
AppId: param.AppId,
|
|
AppId: param.AppId,
|
|
}
|
|
}
|
|
- resp := &usercenter.EntUserResp{}
|
|
|
|
- resp, err = UserCenterLib.GetEntUserInfo(context.Background(), req)
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ resp, err := UserCenterLib.GetEntUserInfo(context.Background(), req)
|
|
|
|
+ if resp.ErrorCode != 0 {
|
|
logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
|
|
logx.Info("查询用户中台创建人信息失败", param.EntId, param.EntUserId, "err:", err)
|
|
- return false, "查询用户中台创建人信息失败", err
|
|
|
|
|
|
+ return ok
|
|
}
|
|
}
|
|
createPerson := resp.Data.Name
|
|
createPerson := resp.Data.Name
|
|
fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
|
|
fool := Mysql.ExecTx("编辑问题、答案", func(tx *sql.Tx) bool {
|
|
@@ -159,21 +152,10 @@ func (k *KnowledgeService) KnowledgeEdit(param *knowledgeclient.KnowledgeEditReq
|
|
"entId": param.EntId,
|
|
"entId": param.EntId,
|
|
}
|
|
}
|
|
ok1 := elastic.Del(Index, Type, query)
|
|
ok1 := elastic.Del(Index, Type, query)
|
|
- ok := elastic.Save(Index, Type, newKnowledge)
|
|
|
|
- if ok && ok1 {
|
|
|
|
- ok = true
|
|
|
|
- msg = "修改问题成功"
|
|
|
|
- } else {
|
|
|
|
- ok = false
|
|
|
|
- err = errors.New("删除es问题失败")
|
|
|
|
- msg = "删除es问题失败"
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- ok = false
|
|
|
|
- err = errors.New("修改mysql问题失败")
|
|
|
|
- msg = "修改mysql问题失败"
|
|
|
|
|
|
+ ok2 := elastic.Save(Index, Type, newKnowledge)
|
|
|
|
+ return ok1 && ok2
|
|
}
|
|
}
|
|
- return
|
|
|
|
|
|
+ return ok
|
|
}
|
|
}
|
|
|
|
|
|
func (k *KnowledgeService) KnowledgeList(param *knowledgeclient.ListRequest) *knowledgeclient.ListData {
|
|
func (k *KnowledgeService) KnowledgeList(param *knowledgeclient.ListRequest) *knowledgeclient.ListData {
|
|
@@ -223,7 +205,8 @@ func (k *KnowledgeService) KnowledgeInfo(answerId int64) (data *knowledgeclient.
|
|
return nil, false
|
|
return nil, false
|
|
}
|
|
}
|
|
|
|
|
|
-func (k *KnowledgeService) KnowledgeDel(answerId int64) (ok bool, msg string) {
|
|
|
|
|
|
+func (k *KnowledgeService) KnowledgeDel(answerId int64) (ok bool) {
|
|
|
|
+ ok = false
|
|
//修改答案
|
|
//修改答案
|
|
answerUpdate := map[string]interface{}{
|
|
answerUpdate := map[string]interface{}{
|
|
"update_time": time.Now().Local().Format(util.Date_Full_Layout),
|
|
"update_time": time.Now().Local().Format(util.Date_Full_Layout),
|
|
@@ -234,14 +217,9 @@ func (k *KnowledgeService) KnowledgeDel(answerId int64) (ok bool, msg string) {
|
|
if fool {
|
|
if fool {
|
|
//删除es数据
|
|
//删除es数据
|
|
query := `{"query":{"bool":{"must":[{"term":{"answerId":"` + strconv.Itoa(int(answerId)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}`
|
|
query := `{"query":{"bool":{"must":[{"term":{"answerId":"` + strconv.Itoa(int(answerId)) + `"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}`
|
|
- ok := elastic.Del(Index, Type, query)
|
|
|
|
- if ok {
|
|
|
|
- return true, "删除成功"
|
|
|
|
- } else {
|
|
|
|
- return false, "删除es问题失败"
|
|
|
|
- }
|
|
|
|
|
|
+ ok = elastic.Del(Index, Type, query)
|
|
}
|
|
}
|
|
- return false, "删除mysql问题失败"
|
|
|
|
|
|
+ return ok
|
|
}
|
|
}
|
|
|
|
|
|
func (k *KnowledgeService) FindAnswer(param *knowledgeclient.FindAnswerReq, addr, index, segment string) *knowledgeclient.Question {
|
|
func (k *KnowledgeService) FindAnswer(param *knowledgeclient.FindAnswerReq, addr, index, segment string) *knowledgeclient.Question {
|
|
@@ -269,7 +247,7 @@ func (k *KnowledgeService) RecommendAnswer(param *knowledgeclient.FindAnswerReq,
|
|
)
|
|
)
|
|
//根据问题进行分词
|
|
//根据问题进行分词
|
|
keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
|
|
keywordsArr := util.HanlpGetNormalWords(param.Question, segment)
|
|
- log.Println("keywordsArr", keywordsArr)
|
|
|
|
|
|
+ logx.Info("keywordsArr", keywordsArr)
|
|
if len(keywordsArr) != 0 {
|
|
if len(keywordsArr) != 0 {
|
|
for _, val := range keywordsArr {
|
|
for _, val := range keywordsArr {
|
|
keyWords += val + " "
|
|
keyWords += val + " "
|
|
@@ -278,7 +256,7 @@ func (k *KnowledgeService) RecommendAnswer(param *knowledgeclient.FindAnswerReq,
|
|
if keyWords == "" {
|
|
if keyWords == "" {
|
|
keyWords = param.Question
|
|
keyWords = param.Question
|
|
}
|
|
}
|
|
- log.Println("问题分词关键字2:", keyWords)
|
|
|
|
|
|
+ log.Println("entId:", SE.Decode4Hex(param.RobotEntId))
|
|
var query = util.DSL4SearchByKwsOrid(keyWords, SE.Decode4Hex(param.RobotEntId))
|
|
var query = util.DSL4SearchByKwsOrid(keyWords, SE.Decode4Hex(param.RobotEntId))
|
|
res := elastic.GetAllByNgram(Index, Type, query, "", "", searchField, 0, 3, 0, false)
|
|
res := elastic.GetAllByNgram(Index, Type, query, "", "", searchField, 0, 3, 0, false)
|
|
log.Println("推荐3个答案:", res)
|
|
log.Println("推荐3个答案:", res)
|