【发布时间】:2021-04-06 14:16:40
【问题描述】:
我想改进我的 MySQL 搜索功能。在我的汽车数据库中搜索“Fi”时,我希望 FIAT 排名第一,因为我觉得汽车品牌的排名应该高于车型版本。我想告诉 MySQL 搜索词是否与品牌的第一个字母匹配,然后优先考虑该结果。
{]1
这是我当前的代码
$sql = "SELECT v.id, v.model, v.model_version, v.model_year, b.brand FROM vehicles v LEFT JOIN brands b ON v.brand_id = b.id WHERE CONCAT(b.brand, ' ', v.model, ' ', v.model_version) LIKE ? LIMIT 6";
【问题讨论】:
-
这与 JS、自动完成和 PHP 无关。您应该查看全文索引。 dev.mysql.com/doc/refman/8.0/en/fulltext-search.html.
-
对!这似乎是有道理的。试过这个,但它不起作用: $sql = "SELECT v.id, v.model, v.model_version, v.model_year, b.brand FROM Vehicles v LEFT JOIN Brands b ON v.brand_id = b.id WHERE MATCH( b.brand, v.model, v.model_version) 反对(?在自然语言模式中)”;
-
您是否已经创建了索引?你能再定义
doesnt work吗?没有给出结果,没有达到预期的排名等等? -
索引是为品牌、型号和型号版本创建的。我得到的错误是“#1210 - MATCH 的参数不正确”一旦我删除品牌,我就会得到一个结果。所以不知何故,我将品牌添加到组合中是有问题的。
-
你能添加
show create table brands的结果吗?