Php MysqL:在多个列上执行全文搜索并100%匹配
我想对MySQL数据库中的多个列进行全文搜索,只使用一个输入字段来搜索地址 到目前为止,我的代码可以正常工作,但我也得到了返回的行,其中并不是所有的搜索词都存在Php MysqL:在多个列上执行全文搜索并100%匹配,php,mysql,Php,Mysql,我想对MySQL数据库中的多个列进行全文搜索,只使用一个输入字段来搜索地址 到目前为止,我的代码可以正常工作,但我也得到了返回的行,其中并不是所有的搜索词都存在 SELECT *, ((1.3 * (MATCH (city) AGAINST ('+$search*' IN BOOLEAN MODE))) + (0.6 * (MATCH (name, zip, str) AGAINST ('+$search*' IN BOOLEAN MODE)))) AS relevance FROM servi
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%的行中
也考虑使用引号来匹配完整的表达式:+“AndersSouthZip”
不幸的是这没有帮助。第一:*通配符不再有效!?第二:如果我输入名字,我会得到一个结果,但一旦我添加城市,我就不会得到任何结果。是否可以关闭“停止字行为”?我认为我的桌子足够小,可以处理它(从性能的角度)。