わかりました、これを明確に説明するために最善を尽くします。私は次に何をすべきか途方に暮れています。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
与えられた資産:
asset1: tags= ford, description = "フュージョンとは異なり.."
asset2: tags= ヒュンダイ, description = "この色はフュージョンです.."
asset3: tags= ford, description = ""
asset4: tags= ford,fusion; description = "このフォード フュージョンには ..."
上記のクエリで適用された重みに基づいて、「ford Fusion」を検索します。順序は次のようになります: 4,1,3,2
代わりに、1,2,4,3 を取得しています。これは、a.id でグループ化しているため、特定のアセットでタグがインデックス化された回数を追加していないためだと思います。また、2 つのクエリを一緒に重み付けしていません。
タグの数は 1,000 以下で、100 万以上のアセットを検討しています。物事をできるだけ効率的にしたい。
次はどこに行こう?私が見逃しているこのパズルのピースはありますか?