package logic import ( cm "app.yhyue.com/moapp/jybase/common" 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" "strconv" ) 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 = `"_id","answer","questions"` answers []*knowledgeclient.Question result = &knowledgeclient.RecommendAnswerResp{} ) //根据问题进行分词 keyWords = util.HttpDo(in.Question) log.Println("问题分词关键字:", keyWords) if keyWords != "" { var query = util.DSL4SearchByKwsOrid(keyWords, strconv.Itoa(int(in.TenantId))) res := elastic.GetAllByNgram(C.Es.Index, C.Es.Type, query, "", "", searchField, 0, 3, 0, false) //log.Println("link_obj:", link_obj) if res != nil && len(*res) > 0 { for _, val := range *res { answers = append(answers, &knowledgeclient.Question{ XId: cm.ObjToString(val["_id"]), Question: cm.ObjToString(val["question"]), Answer: cm.ObjToString(val["answer"]), }) } } result.ErrorCode = 0 result.ErrorMsg = "请求成功" result.Data = answers } else { result.ErrorCode = -1 result.ErrorMsg = "分词出错" result.Data = answers } return result, nil }