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

时间:2011-10-12 05:28:30

标签: mysql similarity

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

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

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

E.g表

TABLE - Articles
id, article_body, article_title

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

2 个答案:

答案 0 :(得分:1)

我会在申请表中这样做。

也许SOUNDEX功能的结果会对你有帮助 -

SELECT SOUNDEX('Hello'), SOUNDEX('Hello world'), SOUNDEX('hellboy');
+------------------+------------------------+--------------------+
| SOUNDEX('Hello') | SOUNDEX('Hello world') | SOUNDEX('hellboy') |
+------------------+------------------------+--------------------+
| H400             | H4643                  | H410               |
+------------------+------------------------+--------------------+

答案 1 :(得分:0)

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

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

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

  

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

     

为你好世界(11-4)/ 11 = 63.63%
  为hellboy(7-4)/ 7 = 42.85%

现在只根据上述计算重新审核Hello World

希望它有效..