【发布时间】:2021-08-19 19:31:01
【问题描述】:
我正在开发一个允许用户创建媒体列表的系统。我正在尝试匹配名称并对重复项进行分组,但保留用户的原始名称。我的问题是如何准确匹配相似的名称。例如,如果我有:
“哈利波特与魔法石” 《点金石——哈利波特》 《哈利波特——贤者之石》
如何在 MySQL 数据库中匹配这 3 个?是否有任何查询可以用来执行此操作,或者可能需要结合其他技术来执行此操作?
【问题讨论】:
-
这是一个有趣的问题......但想象一下结果会是什么:1)“哈利波特”,2)“哈利哲学家之石”,3)“哈利波特与石头”, 4) “迈克尔杰克逊和魔法石”,5) “波特魔法石和哈利哲学家” - 这些选项中的哪一个与“哈利波特和魔法石”匹配?
-
您想自动比较还是手动创建不同命名选项之间的链接?
-
我希望自动创建链接,但我知道可能需要一些手动确认,尤其是在“迈克尔杰克逊和哲学家之石”以及任何可能类似但不是相同的。我只需要找到一种方法来抓住大多数人,并可能提示用户确认。
-
这被称为“模糊匹配”,是文本分析领域的一个重要话题。有许多不同的算法,具有不同程度的复杂性和不同的优点/缺点。一些更简单的(例如levenshtein distance)可以在mysql中实现,但更复杂的需要适当的编程语言。这些算法中的大多数是在 python 或 R 中实现的,而不是在 php 中实现的。您需要研究算法并选择最适合您的业务案例的算法。
标签: php mysql string string-matching