前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >es搜索优化&mysql查询优化

es搜索优化&mysql查询优化

作者头像
用户4945346
发布2020-06-16 10:35:13
1.5K0
发布2020-06-16 10:35:13
举报
文章被收录于专栏:pythonista的日常pythonista的日常

这周优化了我们沙抖官网搜索的功能,这个搜索目前是根据视频标题进行匹配,之前是对用户输入的关键词进行了分词查找,比如用户输入【机器人】,这样的话,只要视频标题中有关键词的任意一个字都会被搜到,比如含有【人】字的标题会展示出来,并可能排的很靠前,所以我就对当前的搜索进行了优化,现在搜索是优先进行相邻短语查询 match_phrase,如果相邻短语查询结果小于2个就进行普通的分词查询,这个相邻短语查询是要求在请求字符串中的所有查询项必须都在文档中存在,文中顺序也得和请求字符串一致,且彼此相连。这样查询的话,标题中含有【机器人】的结果肯定在前。

修改后的查询body体为:

代码语言:javascript
复制
{
    "query": {
        "bool": {
            "filter": {
                "match_phrase": {
                    "video_title": word
                }
            },
            "must": {
                "range": {
                    "video_date": {
                        "gte": "now-30d+8h",
                        "lte": "now+8h"
                    }
                }
            }
        }
    },
    "sort": {
        "video_like": {
            "order": "desc"
        }
    },
    "from": start,
    "size": size,
    "highlight": {
        "pre_tags": [
            "<strong style='color:red'>"
        ],
        "post_tags": [
            "</strong>"
        ],
        "fields": {
            "video_title": {

            }
        }
    }
}

这周内我还对我们的数据表查询进行了优化,加了普通索引和联合索引,现在我们一个视频数据表的数据量是几百兆大小,根据视频行业进行查询时,mysql 响应速度在 600ms 左右,我对行业字段添加了普通索引,查询响应在 30 ms 左右,前后对比优化结果还是很明显的。我们还有根据视频分类进行筛选的功能,视频表的查询条件经常用到视频发布时间和视频分类字段,我就给这俩加了联合索引。添加联合索引后,查询速度也是在 30ms 左右。正如网友所说,如果正确设计并且使用索引 mysql 就是一辆兰博基尼,否则的话它就是人力三轮车。

添加索引语句如下:

代码语言:javascript
复制
1.普通索引
ALTER TABLE `aweme_data` ADD INDEX category_id_index ( `category_id` );
2.添加联合索引
ALTER TABLE `aweme_data` ADD INDEX type_create_time ( `type_id`, `aweme_create_time`);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档