У меня постоянно растущая база ключевых слов. Мне нужно проанализировать входящие текстовые вводы (статьи, каналы и т. Д.) И найти, какие ключевые слова из базы данных присутствуют в тексте. База ключевых слов намного больше текста.
Поскольку база данных постоянно растет (пользователи добавляют все больше и больше ключевых слов, за которыми нужно следить), я считаю, что лучшим вариантом будет разбить вводимый текст на слова и сравнить их с базой данных. Моя основная дилемма - реализовать эту схему сравнения (в этом проекте будут использоваться PHP и MySQL).
Самой наивной реализацией было бы создание простого запроса SELECT к таблице ключевых слов с гигантским предложением IN, перечисляющим все найденные ключевые слова.
SELECT user_id,keyword FROM keywords WHERE keyword IN ('keyword1','keyword2',...,'keywordN');
Другой подход - создать хеш-таблицу в памяти (используя что-то вроде memcache) и таким же образом проверить ее.
Есть ли у кого-нибудь опыт работы с таким поиском и есть ли предложения о том, как это лучше реализовать? Я еще не пробовал ни один из этих подходов, я просто собираю идеи на данный момент.