RTMP推流协议视频直播点播平台/人脸识别系统EasyDSS 定制标签检索功能检索数据出错的问题排查
在多年的视频解决方案开发中,TSINGSEE青犀视频研发团队碰到过很多对产品有定制需求的项目,我们也会尽力根据用户的需求对产品进行修改。
在EasyDSS的定制项目中,客户提出需求增加标签搜索功能,我们添加该功能后进行测试,发现查询出来的数据与按需求检索的数据不匹配。比如数据库中有以下数据,查询 shared 为 true,并且标签是 “天下” 或者标签是 “爱情” ,应该仅能查询出两条数据,但实际查询出三条数据。
编写测试数据,及测试代码。查询后台发出的数据库命令为:
SELECT * FROM "vod_files" WHERE (dir_id = 'Cuwb2D2MR') AND (shared = '1') AND (labels like '%爱情;%') OR (labels like '%天下;%') ORDER BY update_at desc LIMIT 10 OFFSET 0
检查此命令,发现命令查询顺序不正确,正确的命令应该如下:
SELECT * FROM "vod_files" WHERE (dir_id = 'Cuwb2D2MR') AND (shared = '1') AND ((labels like '%爱情;%') OR (labels like '%天下;%')) ORDER BY update_at desc LIMIT 10 OFFSET 0
关键点在于(labels like ‘%爱情;%’) OR (labels like ‘%天下;%’)这一句话,应该添加括号,否则查询的结果就是查询出所有标签是“天下”的数据了。
查看代码,关于 like 的命令为以下代码:
labelArr := estring.ArrayStrToArray(labels)
for _, label := range *labelArr {ors = append(ors, "labels like '%" + label + ";%'")
}
以上代码将所有 like 语句放置在 or 中,因此出现问题,即底层生成的代码为:
db.Where("labels like '%爱情;%'").Or("labels like '%天下;%'")
修改代码如下:
labelArr := estring.ArrayStrToArray(labels)
labelLike := ""
for index, label := range *labelArr {if index > 0 {labelLike = labelLike + " OR "}labelLike = labelLike + "labels like '%" + label + ";%'"
}
if labelLike != consts.EmptyString {wheres = append(wheres, labelLike)
}
该段代码最终生成的代码为
db.Where("labels like '%爱情;%' OR labels like '%天下;%'")
此段生成的代码会将(labels like ‘%爱情;%’) OR (labels like ‘%天下;%’)外侧再添加一段括号,因此正确。
最终测试查询结果为2条数据,解决此问题。以下为返回数据的部分截图,total 为查询到的总数量。
RTMP推流协议视频直播点播平台/人脸识别系统EasyDSS 定制标签检索功能检索数据出错的问题排查相关推荐
- RTMP推流协议视频直播点播平台EasyDSS请求时间接口返回的数据打印在前端页面全屏飘红问题解决
TSINGSEE青犀视频团队接到过很多比较大的项目,这类项目的特点是接入数据量多,处理数据量也大,在对服务器造成负荷的同时,也对程序造成了堵塞. 拿EasyDSS视频直播点播平台举例,一旦EasyDS ...
- 新版RTMP推流协议视频直播点播平台EasyDSS在进行视频直播/录像回看时如何创建视频录像计划?
EasyDSS是TSINGSEE青犀视频开发的可支持接入RTMP推流摄像头的视频流媒体平台,新版EasyDSS互联网直播点播平台支持创建录像计划,用户可以设定周一至周日中,某天某个时间段内开启录像,其 ...
- RTMP推流平台/视频直播点播分析平台/人脸识别系统EasyDSS如何实现RTMP负载均衡?
负载均衡实际上是我们集群的时候提到的一个概念,作为有集群需要的视频直播点播平台EasyDSS,我们在实现多路推流的时候,也需要做到RTMP负载均衡.如何在EasyDSS上实现RTMP负载均衡将是我们在 ...
- RTMP流媒体协议互联网直播/点播平台EasyDSS如何使用 ReverseProxy 中断 flv 流达到自动停播的效果?
关注青犀视频的小伙伴应该知道,我们在其他的博文有提到过EasyGBS可以在演示平台下,设置播放超过三分钟就自动停播的功能,其实在 EasyDSS 开发过程中,我们同样遇到了这种需求:播放一段时间后自动 ...
- 【疑难教程】如何解决推流摄像头推RTMP视频流至EasyDSS视频直播点播平台Chrome浏览器无法播放?
TSINGSEE青犀视频今年上线了和海康合作研发的RTMP推流摄像头,很受用户的支持和信任,RTMP推流摄像头和视频直播点播平台EasyDSS搭配使用能够适用于很多不同的互联网直播.点播场景当中,因此 ...
- 推流摄像头推RTMP视频流至EasyDSS视频直播点播平台Chrome浏览器无法播放如何解决?
TSINGSEE青犀视频今年上线了和海康合作研发的RTMP推流摄像头,很受用户的支持和信任,RTMP推流摄像头和视频直播点播平台EasyDSS搭配使用能够适用于很多不同的互联网直播.点播场景当中,因此 ...
- 视频直播点播平台EasyDSS降低视频流直播延迟的2种方法
视频直播点播平台EasyDSS支持一站式的上传.转码.直播.回放.嵌入.分享等功能,在推流上,可支持手机推流短视频.音乐等音视频文件,提供多种上传方式,支持批量上传.大文件上传.平台视频功能具备超低延 ...
- 视频直播点播平台EasyDSS内核无法启动的原因排查与解决
视频直播点播平台EasyDSS互联网视频云服务经常应用在智慧课堂.在线教育.远程培训.虚拟直播.无人机推流等场景上,平台具备优秀的视频能力,可提供一站式的视频推拉流.转码.点播.直播.时移回放.存储等 ...
- EasyDSS视频直播点播平台无法播放4K视频的原因排查与解决
随着互联网技术的高速发展,视频图像技术也逐渐进步,从360P.480P到720P.1080P.2K再到现在的4K.8K,超高清视频带来的体验自然是以前无法比拟的.正值2022北京冬奥会,据了解,比赛场 ...
最新文章
- 开源 免费 java CMS - FreeCMS1.5-建站向导
- Python能让你上天?带你挖掘隐藏彩蛋~(附代码)
- win10 连接android,win10系统连接安卓手机usb没反应的解决方法
- [转]C#中的委托和事件(续)
- 顺序、二分查找文本数据
- java 放行文件_springmvc中关于静态资源的放行
- 当try和finally都包含return时
- Android PackageManagerService分析三:卸载APK
- 基于OpenGL的贪吃蛇游戏设计与实现
- gitlab中创建项目组及项目
- 信号调制三种方法的带宽比较
- 蒙特卡洛方法(Monte-Carlo Simulation)
- 海豚湾,变态的日本银
- 【动手学深度学习】(task123)注意力机制剖析
- Herman miller Aeron 一代 气压杆(气压棒,气柱)更换笔记(电脑椅中的劳斯莱斯)
- 国债期货matlab,Matlab和国债期货的那些事儿~(四)——关键利率法在利率风险管理中的运用...
- nginx高效学习方法
- Java中出现[Ljava.lang.String的问题
- vi和vt的区别小窍门_十大vi技巧和窍门
- java 可插拔注解_servlet3.1规范翻译:第8章 注解和可插拔性