例如,我想在“我的名字是约翰·乔·史密斯,我住在美国”中搜索“约翰·史密斯”。但是“ John”和“ Smith”之间不得超过5个字符。
如何使用MySql(php)来获得此信息?
我正在为我的数据库构建一个搜索引擎,我已经在使用MATCH AGAINST,但我也想提供另一种搜索方式。
谢谢你,安迪
答案 0 :(得分:0)
您可能想探索
SOUNDEX()
,这将帮助您实现所需的功能,例如自动提示功能。 字符串。但这没有什么缺点,因为只考虑了前几个字符,首字母必须相同,否则您将很难找到匹配项。
对于更高级的需求,我认为您需要查看
Levenshtein距离又称两个字符串的“编辑距离”,并与 阈值
。这是较复杂但较慢的解决方案,但具有更好的灵活性
您可能想在这里参考示例教程
答案 1 :(得分:0)
据我所知,但是“ John”和“ Smith”之间不得超过5个字符
MySQL全文功能不提供这种灵活性。您可以使用like
或正则表达式:
where col regexp 'John.{0,5}Smith'
如果您在子查询中进行全文搜索,则实际上可能具有合理的性能。
令人愉快的like
表达式是:
where col like '%John%Smith%' and
col not like '%John______Smith%'
有六个_
。