mysql全文检索单个字符搜素
字符
全文
检索
搜索
mysql
单个
搜素
匹配
使用
分割
编程技术
发布日期
2022-12-09
更新日期
2022-12-09
阅读次数 97
文章字数 418
字符串使用空格分割。
空格分割后存储到一个字段。
在搜索时,也是分割为单字符,然后搜索,例如:match(字段) AGAINST('字符1 字符2' in boolean mode),
这样一来,没有使用专业的分词工具【太复杂】,也没有使用 ngram【比较慢】,效果也还算可以,至少比 like 要好太多了。
问题1:匹配度不高,例如输入 1,则 111222111, 会比 12 排在前面,因为前者有多个1匹配后者只有一个,则匹配度不高。
问题2:匹配数据越多,性能越低,1千万数据左右,输入几个字符时,就已经很慢了【3-4秒】,如果目标文本很长可能直接超出内存限制从而返回错误。
问题3:如果不拆分成每个词,则依然有部分数据无法搜索,例如:我是中国人,即使是最长划分,也只能是:我、是、中国人。这样依赖输入中国,其实是没有匹配的。所以我们有了一个认识,全文检索始终无法完全复制 like 的效果并且保留全文检索的速度。全文检索最佳领域是搜索关键字,这意味着比如海量文章中搜索关键字【如搜索引擎】,或海量商品中搜索商品【电商】等,而不是完全像 like 那样,这本身就是不现实的。
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-230.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。
字符
全文
检索
搜索
mysql
单个
搜素
匹配
使用
分割
发表评论
相关推荐