eslasticsearch 的优点有哪些?
655

题目描述

假设我要求职,这里我们有一张职位数据表 jobs,我想从中检索一些我想要的工作,一般我会先想好关键词,比如 "舒适办公环境"、“有良好晋升空间 " 等,如果用 MySQL 实现,sql 查询语句如何写?性能如何?

思路点拨

你可能会这样写 SQL:SELECT * FROM jobs WHERE job_desc LIKE %关键词%。这样做,理论上是可以搜到一些数据的,比如和用户输入的关键词完全匹配的就可以,但是假设 jobs 表中很多对工作职位的描述换了个说法,比如 "办公环境舒适”、" 晋升空间良好 " 等,颠倒了词的顺序,LIKE 关键词肯定是匹配不到了。

另外,LIKE 是全表扫描的一个操作,如果你的数据量较小,还好说,但如果你数据量在百万、千万甚至更多的时候,耗时将是不可想象的,更别说还有恼人的分词问题,单单使用 MySQL 是无法解决的。

基于分词后的全文检索,这种情况是 es 的强项,而对于 MySQL 关系型数据库而言完全是灾难因为 es 分词后,每个字都可以利用 FST 高速找到倒排索引的位置,并迅速获取文档 id 列表但是对于 MySQL 检索中间的词只能全表扫(如果不是搜头几个字符)。

我的作业
去发布

登录后即可发布作业,立即

全部作业

数据加载中...

意见反馈 帮助中心 APP下载
官方微信