This works fine but it's a nightmare when it comes to searching.
Other people have good answers here, but I'd like to suggest you approach the problem a little differently. How is it "working fine" if you can't search it? That's kind of like saying "writing to /dev/null is great, but reading is a problem".
I suggest you first think about how you are going to use the information (i.e. how it matters to the business), then think about what information to collect from the user, then think about how to store that so that it can serve the purpose. It's tempting to jump straight to step 3 because in most cases it's "obvious", but when you run into a not-so-obvious situation, go back to the beginning and the solution will be clear.
Preferably, think of at least a couple ways you might use the information. That helps avoid overly-specific data representations. Also avoid overzealous "let's collect this information to be on the safe side". That leads to lots of optional information with no clear connection to the business, which leads to misunderstandings about its meaning. When its time to query the information, you'll have a mess.