Instead of using attributes, maybe allow multiple text filters to search product descriptions for multiple matches
I do not think this is either / or. These are two separate concepts.
Assume you have parts with attributes color, size, cost, weight. Preferred etc. You can filter and find "like" items like normal. We all do that.
Now you need to identify authorized Replacements parts for three installations types that you do for each part.
Installation X
Installation Y
Installation Z
For preferred part A you can swap these parts:
C, Inst X
D, Inst X
E, Inst X
B, Inst Y
C, Inst Y
D, Inst Z
E, Inst Z
For Preferred Part G:
H, Inst X
I, Inst X
J, Inst X
I, Inst Y
J, Inst Y
K, Inst Z
L, Inst Z
Not sure how you do that with attributes. The structure I suggested would work.
The junction table I suggested would do this
Prod1_ID
Prod2_ID
RelationType
A, C, Authorized Swap InstX
This could done slightly different one sided, but seems more complicated
ProdID
Relation
C, Authorized Swap for A in Inst X
B, Authorized Swap for A in Inst Y