我想在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%匹配的行?
答案 0 :(得分:0)
加号是好事,但您必须确保您搜索的其中一个字符串不超过表格行的50%。
还可以考虑使用引号来匹配完整的表达式:+" Anderson City ZIP"