MySql を使用してファセット検索を試しています。
私は2つのテーブルを持っています:
付属品:
id product_id price
1 6000001 24.99
2 6000002 20.99
3 6000003 22.99
4 6000004 25.99
5 6000005 29.99
タグ:
id tagname tagid tagvalue product_id
1 Brand 6000008 Apple 6000001
2 Colour 6000009 Green 6000001
3 Brand 6000008 Sony 6000003
4 Brand 6000008 Sharp 6000021
5 Brand 6000008 Panasonic 6000022
6 Brand 6000008 Onkyo 6000027
現在、製品のリストを選択するために次のクエリを実行しています。
SELECT
tags.tagname,
tags.tagid,
tags.tagvalue,
accessories.*
FROM accessories
Left Join tags ON tags.product_id = accessories.product_id
WHERE tags.tagid = '6000008'
結合により、6 つのレコードを含むレコードセットが得られます。
検索のファセットを設定するには、[accessories.product_id] と [tags.product_id] が一致する [tags.tagvalues] のリストと、上記のクエリを保持する必要があります。
したがって、「Apple」と「Green」、および 6 つのレコードを返す必要があります。
各 product_id に対してクエリを実行することもできますが、これは非常に非効率的な方法のようです。おそらく、私の方法論は再考する必要があります。