gpt4 book ai didi

php - 如何在php中比较2个字符串的部分

转载 作者:可可西里 更新时间:2023-11-01 01:04:08 24 4
gpt4 key购买 nike

晚上好

我在尝试构建一个小搜索算法时遇到了一个小问题。

我有一个包含视频游戏名称和软件名称的数据库表。现在我想通过在其他服务器上获取和解析 xml 文件来添加新的报价。问题是:

如何比较产品名称的字符串,以便即使商品名称与数据库中存储的产品名称不匹配(最高 100%)也能正常工作?

例如,我目前正在使用此 PHP + SQL 代码来比较字符串:

$query_GID = "select ID,game from gkn_catalog where game like '%$batch_name%' or meta like '%$batch_name%' ";

我目前正在使用 like 运算符结合两个通配符来比较报价名称 (batch_name) 与数据库中的名称 (game )。


我想知道如何改进这个方法,因为这个方法不是很安全,或者不管你想怎么调用它,会发生什么:

如果数据库显示游戏名称是:

Deus Ex Human Revolution Missing Link

batch_name 表示:

Deus Ex Human Revolution Missing Link DLC

结果将是空的/错误的/假的……嗯,它根本不会在我的数据库中找到游戏。

类似这样的事情:

Database = Lego Star Wars The Complete Saga
batch_name = Lego Star Wars : The Complete Saga
Result: False

有没有更好的方法来执行 SQL 查询?
或者我如何尝试使该查询正常工作,以便它可以处理带有特殊字符(如 -minus- 和 [brackets])的字符串 < br/> 和/或未包含在数据库名称中的字符(如 DLC、CE...)?

最佳答案

您正在寻找模糊搜索算法和模糊搜索结果。这是一个完整的研究领域。但是,如果您快速谷歌一下,也有一些简单的教程可以帮助您入门。

您可能会想尝试像 PHP 的精彩 levenshtein 这样的东西。方法,它计算两个字符串的“接近度”。但是,这需要将其与每条记录进行匹配。如果将有数千条记录,那是不可能的。

MySQL 有一些匹配的工具可能会有所帮助。我在写这篇文章时看到,有人已经提到了 FULLTEXT and MATCH () 在评论中。这些都是不错的选择。

还有一些其他好的解决方案需要研究。存储关键字索引(删除所有文章和帮助者,如 of/the/an/am/is/are/was/of/from),然后在搜索中搜索每个词是一个简单的解决方案。但是,它不会产生很好的结果,因为返回值没有很好地加权,而且根本没有本地化。

还有许多廉价而出色的第三方搜索工具(我想到了 Lucene),它们可以为您完成大部分工作。您只需调用一个 API,他们就会管理缓存、关键字、索引、模糊等搜索。

这里有一些与模糊搜索相关的 SO 问题,这将帮助您找到更多的术语和想法:

关于php - 如何在php中比较2个字符串的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com