好的,我会尽力解释清楚。我不知道下一步该做什么。我正在构建一个 DAM(数字资产管理器)。我有一个资产表、一个标签表和一个要加入 2 的资产表。这是我的搜索查询:
SELECT a.*
FROM assets a, tags t, asset_tags at
WHERE 1*MATCH (a.notes) AGAINST ('{$searchQuery}' IN BOOLEAN MODE)
UNION
SELECT a.*
FROM assets a, tags t, asset_tags at
WHERE 2*MATCH (t.name) AGAINST ('{$searchQuery}' IN BOOLEAN MODE)
AND at.tag_id = t.id
AND a.id = at.asset_id
GROUP BY a.id
给定资产:
资产1:标签=福特,描述=“不像融合……”
资产2:标签=现代,描述=“这种颜色是融合……”
资产3:标签=福特,描述=“”
资产4:标签=福特,融合;description = "这辆福特 Fusion 有..."
搜索“ford Fusion”,根据上述查询中应用的权重,顺序应为:4,1,3,2
相反,我得到 1,2,4,3。我猜这是因为我按 a.id 分组,所以它没有添加标签在特定资产上被索引的次数。它也没有将两个查询放在一起。
我正在考虑拥有一千个或更少的标签,但资产多达一百万。我想让事情尽可能高效。
我接下来要去哪里?我缺少这个难题的一部分吗?