MysqL:对多列进行全文搜索,100%匹配

时间:2015-02-17 18:13:12

标签: 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%匹配的行?

1 个答案:

答案 0 :(得分:0)

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

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

相关问题