零度回忆 大佬有话说 : 2020-3-23 10:45:11
新手求问这样的sql语句应该怎么实现呢
用户提交一段文字,mysql检查这段文字与content表中str里是否有相似度大于90%的字段, 有的话就返回
yc002t
ddo 大佬有话说 : 2020-3-23 10:45:40
同问帮顶
谎言不一定是谎言,被发现的谎言,才算是谎言。——《秋之回忆》
zsbd
h20 大佬有话说 : 2020-3-23 10:53:14
你要先定义相似度大于90%
零度回忆 大佬有话说 : 2020-3-23 10:55:17
h20 大佬有话说 : 2020-3-23 10:53
你要先定义相似度大于90%
这个用php的similar_text函数可以实现, 不知道sql的怎么写才能高效率的执行?
我是一个大水怪 大佬有话说 : 2020-3-23 11:11:34
本帖最后由 我是一个大水怪 于 2020-3-23 11:21 编辑
数据库最好只用于存储,别涉及太复杂的应用层逻辑,你应该用其它搜索框架。
你可以自定义函数,将PHP版本的similar_text转换为SQL版本的,然后在SQL中调用。
两个字符串的相似程度计算依据 Programming Classics: Implementing the World’s Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。也请注意,该算法的复杂度是 O(N**3),N 是最长字符串的长度
算了,这效率太低了,还是别用了。