From 0357939d4ab2a10ae3678e2285d012c713c26963 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 16 五月 2024 16:08:18 +0800 Subject: [PATCH] 解析结果匹配文字库并保存 --- service/process.go | 25 +++++++++++++++++++++++-- 1 files changed, 23 insertions(+), 2 deletions(-) diff --git a/service/process.go b/service/process.go index 1d1595a..29eb5f3 100644 --- a/service/process.go +++ b/service/process.go @@ -13,6 +13,7 @@ "speechAnalysis/constvar" "speechAnalysis/models" "speechAnalysis/pkg/logx" + "strings" ) // Response 缁撴瀯浣撶敤浜庡瓨鍌ㄥ搷搴斾綋鐨勫唴瀹� @@ -110,15 +111,18 @@ return } logx.Infof("AnalysisAudio result: %v", resp) + words := GetWordFromText(resp.Result, audio) + err = models.WithTransaction(func(db *gorm.DB) error { - err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{ + err = models.NewAudioSearch().SetOrm(db).SetID(audioId).UpdateByMap(map[string]interface{}{ "audio_status": constvar.AudioStatusFinish, "score": resp.Score, + "tags": strings.Join(words, ","), }) if err != nil { return err } - err = models.NewAudioTextSearch().Save(&models.AudioText{ + err = models.NewAudioTextSearch().SetOrm(db).Save(&models.AudioText{ AudioID: audio.ID, AudioText: resp.Result, }) @@ -126,9 +130,26 @@ }) if err != nil { logx.Infof("AnalysisAudio success but update record failed: %v", err) + _ = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed}) return } }() return nil } + +func GetWordFromText(text string, audio *models.Audio) (words []string) { + if audio == nil { + return nil + } + wordRecords, err := models.NewWordSearch().SetLocomotiveNumber(audio.LocomotiveNumber).FindNotTotal() + if err != nil || len(wordRecords) == 0 { + return nil + } + for _, v := range wordRecords { + if strings.Contains(text, v.Content) { + words = append(words, v.Content) + } + } + return words +} -- Gitblit v1.8.0