Php 如何找到类似的帖子?

Php 如何找到类似的帖子?,php,mysql,Php,Mysql,所以,我有PHP+MySQL。我正在查看标题列以查找最相似的字符串 如何在数据库中找到最相似的字符串并按相似性对其排序?您应该使用SELECT LIKE查询,因为其中有一些文档。最简单的方法是在SQL查询中使用LIKE: WHERE column_name LIKE '%string%' 您可以用“%”替换空白,使其更有效。我不认为这是正确的方式,但考虑到你的问题应该足够好。我不确定你真正想做什么,但我认为你正在寻找在标题栏中找到最相似文本的查询 如果这是真的,它可以帮助: SQL SELEC

所以,我有PHP+MySQL。我正在查看
标题
列以查找最相似的字符串


如何在数据库中找到最相似的字符串并按相似性对其排序?

您应该使用SELECT LIKE查询,因为其中有一些文档。

最简单的方法是在SQL查询中使用LIKE:

WHERE column_name LIKE '%string%'

您可以用“%”替换空白,使其更有效。我不认为这是正确的方式,但考虑到你的问题应该足够好。

我不确定你真正想做什么,但我认为你正在寻找在标题栏中找到最相似文本的查询

如果这是真的,它可以帮助:

SQL

SELECT * FROM yourTable where table LIKE '%searchedText%'

在这种情况下,
%
意味着您可以找到包含您的
searchedText

的内容,您可以使用PHP函数获取字符串之间的值

Levenshtein距离是衡量弦的不同程度(反之,相似程度)。假设您有3个字符串:

  • 见现场直播
  • 观看现场跑步
  • 你好,我叫约翰
使用Levenshtein距离,我们得到以下结果:

See spot run - See spot run: 0
See spot run - Watch spot run: 5
See spot run - Hello my name is John: 17

Watch spot run - See spot run: 5
Watch spot run - Watch spot run: 0
Watch spot run - Hello my name is John: 18

Hello my name is John - See spot run: 17
Hello my name is John - Watch spot run: 18
Hello my name is John - Hello my name is John: 0
如您所见,更多类似的字符串具有较低的Levenshtein距离。这种解决方案并不总是实用的,因为您必须在希望比较的每个字符串之间存储结果。因此,如果您已经有1000条记录,那么在创建新记录时,您必须将新字符串的结果与其他字符串进行比较。然后可以在SQL查询中使用这些分数

这对你来说可能不是最好的解决办法,但既然没有人提到,我想我会的

您还可以查看其他一些有趣的PHP函数,了解字符串相似性:

  • -计算两个字符串之间的相似性
  • -计算字符串的soundex键

正如我看到的那样,“LIKE”将准确地显示包含我字符串的字符串,但我需要这样的内容:“嗨,我的朋友。你好吗”类似于“你是我的朋友”。(4/4个单词来自我的字符串)“我的朋友是迈克”不太相似,因为它包含我字符串中的3/4个单词。