MySQL函数用于检查两个文本之间的相似百分比

use*_*788 7 mysql similarity

我需要MySQL代码来检查通过表单提交的文本与存储在MySQL数据库中的大量文本之间的相似性百分比.

我正在寻找与PHP的similar_text()功能类似的MySQL存储过程.已经有MySQL Levenshtein距离程序,但这还不够.

当用户提交文本时,算法应返回数据库中的任何条目,其中包含与提交的文本的给定百分比(它将仅比较数据库中的一列),例如,返回与提交的文本具有相似性> 40%的数据库中的所有条目由用户.

例如桌子

TABLE - Articles
id, article_body, article_title
Run Code Online (Sandbox Code Playgroud)

代码应返回具有与用户提交的文本(article_body)相似百分比> 40%(或其他给定值)的所有行.

diE*_*cho 0

我认为算法应该是这样的..

  • 首先计算给定单词的长度(使用LENGTH)。
  • 然后在特定列中搜索该单词(使用INSTR或任何特定函数)
  • 现在计算每个匹配单词的长度并使用简单的数学

例如:我想搜索“ Hell ”,匹配率超过50%,在我的数据库中有 2 个匹配词“ Hello World ”和“ Hellboy

长度(地狱)= 4
长度(你好世界)= 11
长度(地狱男孩)= 7

对于你好世界 (11-4)/11 = 63.63%
对于地狱男爵 (7-4)/7 = 42.85%

现在只会Hello World根据上述计算重新检索。

希望它有效..