1

好的,我会尽力解释清楚。我不知道下一步该做什么。我正在构建一个 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 分组,所以它没有添加标签在特定资产上被索引的次数。它也没有将两个查询放在一起。

我正在考虑拥有一千个或更少的标签,但资产多达一百万。我想让事情尽可能高效。

我接下来要去哪里?我缺少这个难题的一部分吗?

4

0 回答 0