【问题标题】:How to return results if more than 60% of string is matching如果超过 60% 的字符串匹配,如何返回结果
【发布时间】:2014-06-26 05:54:48
【问题描述】:

我有一个保存产品名称的表。我想执行一个选择查询语句,其中 60% 或更多的结果匹配

例如:如果有人输入“verifone 500”, 那么产品:

1) verifone vx500
2) verifone5
3) verifon00
4) verifone 50"

应该匹配,因为它们与搜索到的产品有 60% 或更多相同。我试过这段代码

select `product_name` from product_data where `product_name` LIKE '%verifone 500%'

但没有得到想要的结果。

希望任何机构可以提供帮助?

【问题讨论】:

标签: php sql


【解决方案1】:

您应该使用FULLTEXT 搜索MyISAM 表引擎!

如果您的表引擎是 MyISAM,则为字段 product_name 创建 FULLTEXT 索引。

然后尝试查询:

SELECT `product_name`, MATCH (`product_name`) AGAINST ('verifone 500' IN NATURAL LANGUAGE MODE) AS match
FROM `product_data`
HAVING `match` > 0.5
ORDER BY `match` DESC

【讨论】:

  • 我已经尝试过你的代码,但它给了我这样的错误“找不到与列列表匹配的 FULLTEXT 索引”
  • 因为您没有为列 product_name 创建 FULLTEXT 索引。
猜你喜欢
  • 2017-05-26
  • 2015-09-08
  • 2023-03-14
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
相关资源
最近更新 更多