php - MysqL:对多列执行全文搜索并100%匹配

标签 php mysql

我想对 MySQL 数据库中的多个列进行全文搜索,仅使用 1 个输入字段来搜索地址。

到目前为止,我的代码有效,但我也得到了返回的行,其中并非所有搜索词都存在。

SELECT *, ((1.3 * (MATCH (city) AGAINST ('+$search*' IN BOOLEAN MODE)))
+ (0.6 * (MATCH (name, zip, str) AGAINST ('+$search*' IN BOOLEAN MODE)))) AS relevance
FROM service
WHERE (MATCH (name, city, zip, str) AGAINST ('+$search*' IN BOOLEAN MODE)) 
HAVING relevance > 0 ORDER BY relevance DESC LIMIT 10

这可能会返回如下内容:

$search = "Anderson City ZIP"

1. Anderson, City, ZIP, street x
2. Anderson, City, ZIP, street y
3. Smith, City, ZIP, street x

因此第 3 行是错误的,因为它不包含 Anderson,而是包含 Smith

我已经尝试在 $search 字符串中添加 + 运算符 (Anderson City ZIP --> +Anderson +City +ZIP),但结果通常是这样不显示任何内容。

是否可以仅返回 100% 匹配的行?

最佳答案

加号是一件好事,但您必须确保您正在搜索的字符串之一不在表中超过 50% 的行中。

还可以考虑使用引号来匹配完整表达式:+"Anderson City ZIP"

关于php - MysqL:对多列执行全文搜索并100%匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568228/

相关文章:

php - 使用MySQL时的UTF8问题

php - 如何将表单的 url 添加到 mysql 数据库中?

php - 使用 php preg_replace 更改 html 链接的 href 属性

php - 如何从我的上传路径文件夹的数据库中获取我的图像?

javascript - 成功的 ajax 返回后模态框不会关闭

php - 将使用支票付款方式制作的订单状态更改为 "processing"状态

php - 社交登录实现的数据库结构?

mysql - 使用 TFDConnection 以编程方式设置 "Server"

php - 如何提供合适的查询来检查房间可用性

iphone - 将部分 mySQL DB 从网站转换为 iOS 上的 CoreData/SQLite