- 背景:在做海外主数据项目的时候,PM提出了一个需求,说是类似于搜索的功能。但是需要实现根据输入的字符串进行相似度的查询,并且计算出输入的字符串与查出的字符串的相似度是多少。
-
思考:第一次听到需求的时候感觉还挺简单的,以为不就是个迷糊查询吗?但仔细一想,确实是有点出入的,模糊查询可能并不能很好的完成此次需求;
- 因为是这样的假设你输入的 字符串为 "ABC" ,数据库使用模糊查询出来的数据,包含的数据可能会是:“ABC”,"1ABC","11ABC","ABC1",等等之类的数据,但是都有一个共性,"ABC"必须是连着的,所以导致:"AB","BC"这样的数据出不来。这个时候假如说,我是一个用户,我想要的是:"AC",模糊查询不能给到想要的:"AC";,但是引入ES框架又太沉,申请资源啥的很麻烦。所以思考再三,能不能利用现有的资源来完成这样的需求;
-
解决方案:
- 在mysql的5.7版本之后,是自带的有分词器的`ngram`,其可以支持中文、英文、日文、韩文分词;
- 只需在所需要的字段加上全文索引并且引用这个分词器,语句如下
-
<
文章来源地址https://www.toymoban.com/news/detail-428046.html
文章来源:https://www.toymoban.com/news/detail-428046.html
到了这里,关于如何玩mysql5.7实现分词查询,来实现类似ES的效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!