Добрый день. Разрабатываю проект на Yii2, основной целью которого является парсинг сайтов и поиск там определенных фраз/слов. Но не всё так просто.
Идея в следующем: пользователь вводит слово для мониторинга. После чего задача добавляется в
cron и сайт парсит определенный набор сайтов и пытается найти вхождения этих слов в тексте. Первую часть, а именно парсинг сайтов, получилось сделать. А вот с поиском проблема. Не знаю как его правильно организовать.
Текст для поиска обычно 500+ слов, а периодичность парсинга 30 минут - 1 час.
Просто искать оператором
LIKE не подходит. Начал изучать полнотекстовый поиск и различные движки для него, такие как
TntSearch (
обертка для yii2),
ElasticSearch, Sphinx и т.д.
И вроде бы это как раз то, что мне нужно. Но проблема в том, что они все работают с бд, а мне, возможно, не имеет смысла заносить все спарсенные текста в базу, а потом искать, после чего ещё и удалять ненужные текста. Будет постоянное переписывание индексов, слишком большая нагрузка (возможно).
На этот счет было пару мыслей:- Попытаться делать поиск в момент парсинга. То есть я получил текст с сайта, затем каким то образом выполнил поиск по этому тексту (не ясно как). И в случае, если в этом тексте есть упоминания искомого слова/фразы, то заносить в базу. Но в этом случае процесс становится очень долгим, т.к. все происходит за раз (парсинг и поиск).
- Либо разделить действия парсинга и поиска. То есть я спарсил некоторый объем данных, занёс их в таблицу (либо создать буферную таблицу, либо сразу в основную в определенной меткой). И уже потом делаю поиск с помощью вышеупомянутых TntSearch, ElasticSearch и т.д. Но не будет ли излишними в этом случае эти движки?
Хочется найти нечто простое, пока что штуки вроде Sphinx пугают и кажутся избыточными для такой простой задачи.
Как бы вы реализовывали подобную систему, пожалуйста поделитесь своим мнением, спасибо!