我正在尝试构建一个使用图片代码的相关图片部分。
我的数据库结构很简单:
table: images table: image2tag table: tags
|image_id|image_path| |t2i_id|image_id|tag_id| |tag_id|tag_name|
我想要做的是根据两者中的标签找到与当前图像有很高关系的图像。通过其他帖子,我想我可能需要使用MATCH AGASINT,被比较的值是数字ID,但根据dev.mysql.com,MATCH AGAINST用于比较文本字符串,所以我很困惑。
我在stackoverflow上找到了一些例子但没有涉及连接的例子,有人可以帮我解决这个问题。到目前为止我尝试过的:
$getRelated = $conn -> prepare("SELECT *,
MATCH(it.image_tag_id) AGAINST (?) AS score
FROM images i
LEFT JOIN image2tag i2t
ON i.image_id = i2t.i2t_image_id
LEFT JOIN image_tags it
ON i2t.i2t_tag_id = it.image_tag_id
WHERE MATCH(it.image_tag_id) AGAINST (?)
ORDER BY score DESC LIMIT 5");
$getRelated -> bindParam(1, $tags, PDO::PARAM_STR);
$getRelated -> bindParam(2, $tags, PDO::PARAM_STR);
$getRelated -> execute();
我想我会以错误的方式解决这个问题,任何帮助都会受到赞赏。
答案 0 :(得分:0)
很久以前我用过这个。
您需要以下内容:
无法使用数字。请参阅官方文档:https://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
也许你可以分裂逻辑: