【发布时间】:2013-03-08 21:39:53
【问题描述】:
晚上好,
我在尝试构建一个小搜索算法时遇到了一个小问题。
我有一个包含视频游戏名称和软件名称的数据库表。现在我想通过在其他服务器上获取和解析 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 人类革命缺少链接
并且批处理名称说:
Deus Ex Human Revolution 缺少链接DLC
结果将是空的/错误的/错误的......它根本不会在我的数据库中找到游戏。
类似这样的事情也是如此:
数据库 = 乐高星球大战完整传奇
batch_name = 乐高 星球大战 : 完整的传奇
结果:错误
有没有更好的方法来执行 SQL 查询?
或者我怎样才能尝试让该查询正常工作,以便它可以处理带有特殊字符的字符串(如 -minus- 和 [括号])
和/或数据库名称中未包含的字符(如 DLC、CE...)?
【问题讨论】:
-
调查全文搜索并使用 MATCH() 函数。 dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
-
@splash21 我不知道 MySQL 现在有一个 Levenshtein;好主意!