Я использую StormCrawler для Live Crawling. Я вставляю домен в ElasticSearch, и искатель отлично сканирует, я определил предел обхода URls для каждого домена (используя Redis в SimpleFetcherBolt).Параллельная обработка нового домена/URL-адреса, вставленного в StormCrawler с использованием ElasticSearch
Сценарий: когда я вставляю домен, StormCrawler начинает сканирование. Теперь введите новый домен в ElasticSeeds, StormCrawler не получит его немедленно.
Он занят в получении страниц предыдущего домена. Если предел высок (скажем, 1000 URL-адресов), для начала сканирования по вновь вставленному домену требуется 20 минут.
Я хочу, чтобы результаты мгновенно, есть ли какой-либо приоритет, который можно установить для нового домена? или StormCrawler начинает сканирование в новом домене. Когда новый домен вставлен? Различная очередь (БД) для каждого домена?
Любые предложения будут оценены.
По пределу я имел в виду только SC получает ограниченные URLS одного домена после этого он прекращает выборку. например, Limit равен 100, SC получит 100 адресов каждого домена. Я использую defualt ElasticSearchSpout и запускаю один экземпляр SImpleFetcherBolt (SC использует Agg.Spout по умолчанию справа)? Я проверил журналы, и кажется, что SC выбирает новые домены, только он (SimpleFetcherBolt) завершает выборку HTML-содержимого уже в очереди URL. – superB
Спасибо за предложения. Я использую FetcherBolt и AggregateSpout.It довольно быстро и работает параллельно. Быстрые вопросы: в чем разница между SamplerAggregationSpout и AggregationSpout?Как ограничить обход каждого домена в URL-фильтре? – superB
SamplerAggregationSpout полезен для больших обходов, он берет образец результатов перед агрегацией. Это быстрее, но не имеет приоритета, увеличивая nextFetchDate. > Как ограничить обход каждого домена в URL-фильтрах? Вы можете написать собственный фильтр URL, который запрашивает ES для количества URL-адресов для данного домена или использует Redis так, как вы уже делаете, но в пределах фильтра –