When you go for the 2nd solution mentioned in your first post, you got to use that with like operator, which is a little slow. If data is not going to be huge, then you can opt for that.
But the 1st option should be a viable solution in case of huge data, where you got to use join to get the product. But the one who provides keyword should be aware of what keywords exist in the db, any mistake or half spelt would result in any product.
Hope that helps.
- Vijay G
Strive for Perfection