package logic import ( cm "app.yhyue.com/moapp/jybase/common" . "app.yhyue.com/moapp/jybase/encrypt" elastic "app.yhyue.com/moapp/jybase/esv1" "context" "github.com/zeromicro/go-zero/core/logx" . "knowledgeBase/rpc/knowledge/init" "knowledgeBase/rpc/knowledge/internal/svc" "knowledgeBase/rpc/knowledge/knowledgeclient" "knowledgeBase/rpc/knowledge/util" "log" ) type RecommendAnswerLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewRecommendAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RecommendAnswerLogic { return &RecommendAnswerLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *RecommendAnswerLogic) RecommendAnswer(in *knowledgeclient.FindAnswerReq) (*knowledgeclient.RecommendAnswerResp, error) { var ( keyWords = "" searchField = `"answer","question"` answers []*knowledgeclient.Question result = &knowledgeclient.RecommendAnswerResp{} ) //根据问题进行分词 keyWords = util.HttpDo(in.Question) log.Println("问题分词关键字:", keyWords) var query = util.DSL4SearchByKwsOrid(keyWords, SE.Decode4Hex(in.RobotEntId)) res := elastic.GetAllByNgram(C.Es.Index, C.Es.Type, query, "", "", searchField, 0, 3, 0, false) if res != nil && len(*res) > 0 { for _, val := range *res { answers = append(answers, &knowledgeclient.Question{ Question: cm.ObjToString(val["question"]), Answer: cm.ObjToString(val["answer"]), }) } } result.ErrorCode = 0 result.ErrorMsg = "请求成功" result.Data = answers return result, nil }