Мне на ум приходят три подхода, хотя я уверен, что может быть и больше. Конечно, в любом случае я бы сохранял значения в таблице базы данных (или в файле конфигурации, или в любом другом месте, в зависимости от вашего приложения), чтобы его можно было легко редактировать.
1) Самый простой: преобразовать список в регулярное выражение в форме "keyword1 | keyword2 | keyword3" и посмотреть, соответствует ли ввод.
2) Средний: добавьте слова в хеш-таблицу, затем разбейте ввод на слова (возможно, вам придется использовать замену регулярного выражения для удаления пунктуации) и попытайтесь найти каждое слово ввода в хеш-таблице.
3) Самое сложное: это может не работать в зависимости от вашей конкретной ситуации, но если все возможное содержимое может быть проиндексировано поисковым решением (например, Apache SOLR), тогда ваш список ключевых слов может быть использован в качестве строки поиска. и вы можете вернуть результаты выше определенного уровня релевантности.
Трудно точно определить, какое решение будет работать лучше, не зная больше о ваших исходных данных. Большое количество ключевых слов может привести к застреванию регулярного выражения, но если это короткий список, то он может отлично работать. Если ваши входы длинные, то # 2 не будет работать так хорошо, потому что вы должны проверить каждое входное слово. Как всегда, ваш пробег может меняться, поэтому я бы начал с самого простого решения, которое, как мне показалось, сработало бы, и посмотрел, приемлемо ли это.