Использование условных выражений и добавление объединений и где должно работать нормально для базовой функции поиска, как вы описали.
Я сам использовал что-то похожее, и этого достаточно, если вам не требуется более сложное сопоставление ключевых слов или что-то подобное.
Если вам нужно что-то более сложное или вам нужна более высокая производительность, вам, вероятно, следует подумать о том, чтобы использовать реальный механизм полнотекстового поиска, такой как Lucene, или Solr и ElasticSearch, возможно, проще использовать из PHP, чем необработанный Lucene самостоятельно.