2012-04-26 3 views
13

Я пытаюсь создать очень маленькую поисковую систему ниши, используя Nutch для сканирования определенных сайтов. Некоторые из сайтов являются новостями/блогами. Если я сканирую, скажем, techcrunch.com, а также храню и индексирую их главную страницу или любую из их главных страниц, то через несколько часов мой индекс для этой страницы будет устаревшим.Стратегия для сканирования/индексации часто обновляемых веб-страниц?

Есть ли у большой поисковой системы, такой как Google, алгоритм для повторного сканирования часто обновляемых страниц очень часто, ежечасно? Или он просто забивает часто обновляемые страницы очень низко, чтобы они не возвращались?

Как я могу справиться с этим в своем приложении?

ответ

2

Попробуйте сохранить некоторые данные на главной странице на частоте обновления. Обнаружение обновления легко просто сохранить ETag/Last-Modified и отправить обратно If-None-Match/If-Updated-Since заголовки со следующим запросом. Сохранение частоты обновления running average (скажем, для последних 24 обходов) позволяет достаточно точно определить частоту обновления лицевых страниц.

После того, как вы выполнили сканирование главной страницы, вы должны определить, когда ожидается следующее обновление, и поместите новое сканирование в ведро прямо в это время (ведра на один час обычно являются хорошим балансом между быстрым и вежливым). Каждый час вы просто берете соответствующее ведро и добавляете задания в очередь заданий. Таким образом, вы можете иметь любое количество сканеров и все еще иметь возможность контролировать планирование отдельных обходов.

+0

Спасибо. Позвольте мне спросить о чем-то более конкретном, хотя, что в случае сканирования разных каталогов? Например, страница с каталогом людей, которые доступны для поиска, но может быть просмотрена в алфавитном порядке без фильтров? Или страницу, которая собирает статьи и публикует их в порядке их даты публикации в Интернете? Как бы можно было обнаружить, что была введена новая запись, скажем, на стр. 34. Мне пришлось бы пересказывать все доступные страницы? – Swader

+0

Листинговые страницы, очевидно, имели бы новые заголовки ETag (но не обязательно новые заголовки с лазисом). В большинстве случаев вам придется пересказывать страницы с листингами. Но, когда вы также следите за ссылками на отдельные страницы статей, вам нужно будет только сканировать новые сообщения. – simonmenke

+0

Etag/Last-Modified не являются надежными источниками для модификации страницы специально для динамически созданного контента. Во многих случаях эти переменные генерируются интерпретатором языка неточно. – AMIB

21

Хороший вопрос. Это фактически активная тема в исследовательском сообществе WWW. Используемая методика называется Стратегия повторного сканирования или Обновление страницы.

Как я знаю, что есть три различных факторов, которые были рассмотрены в литературе:

  • Изменение частоты (как Ofter обновляется содержание веб-страницы)
    • [1]: Формализовал понятие «свежести» данных и использовал poisson process для моделирования изменения веб-страниц.
    • [2]: Частота оценки
    • [3]: Больше планирования политики
  • Релевантность (насколько велико влияние обновленное содержание страницы на результатах поиска)
    • [4] : Максимизировать качество работы пользователей для тех, кто запрашивает поисковую систему.
    • [5]: Определить (почти) оптимальные частоты сканирования.
  • Информация Долговечность (время жизни фрагментов контента, которые появляются и исчезают с вебом-страниц с течением времени, которая проявляется не сильно коррелирует с частотой изменения)
    • [6]: различие между эфемерным и персистирующим содержанием

Возможно, вам захочется решить, какой фактор более важен для вашего приложения и пользователей. Затем вы можете проверить приведенную ниже ссылку для получения более подробной информации.


Edit: Я кратко упомянутый в [2], чтобы получить оценщик частоты вы начали. Исходя из этого, вы должны быть в состоянии выяснить, что может быть полезно вам в других документах. :)

Пожалуйста, следуйте приведенному ниже порядку, чтобы прочитать эту статью. Это не должно быть слишком сложно понять, если вы знаете некоторую вероятность и статистику 101 (может быть, намного меньше, если вы просто примете формулу оценки):

Шаг 1. Перейдите к Раздел 6.4 - Применение к Веб-искатель. Здесь Cho перечисляет 3 подхода для оценки частоты изменения веб-страницы.

  • Единообразная политика: искатель пересматривает все страницы с частотой один раз в неделю.
  • Наивная политика: в первые 5 посещений искатель посещает каждую страницу с частотой раз в неделю. После 5 посещений искатель оценивает частоты смены страниц с использованием наивной оценки (раздел 4.1)
  • Наша политика: искатель использует предложенную оценку (раздел 4.2) для оценки частоты изменения.

Шаг 2. Наивная политика. Пожалуйста, перейдите к разделу 4. Вы прочтете:

Наглядно, мы можем использовать X/T (X: количество обнаруженных изменений, T: период наблюдения) в качестве расчетной частоты изменения.

Секция подпоследовательности 4.1 раз доказал, эта оценка является предвзятым 7, в-последовательны 8 и эффективных 9.

Шаг 3. Улучшенная оценка. Перейдите в раздел 4.2. Новая оценка выглядит следующим образом: enter image description here

где \bar X является n - X (число доступов, что элемент не изменился) и n этого числа доступов. Поэтому просто возьмите эту формулу и оцените частоту изменения. Вам не нужно понимать доказательство в остальной части подраздела.

Этап 4. В разделе 4.3 и разделе 5 вы найдете несколько трюков и полезных методов, которые могут быть полезны для вас. В разделе 4.3 обсуждалось, как бороться с нерегулярными интервалами. Раздел 5 решил вопрос: когда доступна дата последней модификации элемента, как мы можем использовать его для оценки частоты изменения? Предложенная оценка с использованием даты последней модификации показано ниже:

enter image description here

Разъяснение выше алгоритма после рис.10 в статье очень ясно.

Шаг 5. Теперь, если у вас есть интерес, вы посмотрите на настройки эксперимента и результаты в разделе 6.

Так вот это может. Если вы сейчас чувствуете себя более уверенно, продолжайте и попробуйте бумагу для свежести в [1].


Список литературы

[1] http://oak.cs.ucla.edu/~cho/papers/cho-tods03.pdf

[2] http://oak.cs.ucla.edu/~cho/papers/cho-freq.pdf

[3] http://hal.inria.fr/docs/00/07/33/72/PDF/RR-3317.pdf

[4] http://wwwconference.org/proceedings/www2005/docs/p401.pdf

[5] http://www.columbia.edu/~js1353/pubs/wolf-www02.pdf

[6] http://infolab.stanford.edu/~olston/publications/www08.pdf

+2

Довольно продвинутый материал, у меня болит голова при чтении. Благодарю. – Swader

+0

@Swader: Какова ценность «свежей информации» для конечных пользователей? Является ли оно строго отрицательным экспоненциальным по времени? Все ли пользователи одинаковы по форме и масштабу этой функции; все сайты одинаковы для всех пользователей? Для этого требуется немного оптимизационного числа - хруст. –

+0

Все пользователи и сайты одинаковы по форме и шкале. Другими словами, конечная цель состоит в том, чтобы просто иметь каталог поиска, который сканируется в другом месте. – Swader

2

Я не специалист в этой теме любой натяжкой, но Sitemaps являются одним из способов решения этой проблемы.

В своих Проще говоря, XML Sitemap, обычно называемый Sitemap, с капитала S представляет собой список страниц вашего сайта. Создание и отправки Sitemap помогает убедиться, что Google знает обо всех страницах на вашем сайте, включая URL-адреса, которые не могут быть обнаружены с помощью обычного процесса обхода Google. Кроме того, вы также можете использовать Sitemaps для предоставления Google метаданных об определенных типах контента на вашем сайте, включая видео, изображения, mobile и News.

Google использует это специально, чтобы помочь им сканировать новостные сайты.Вы можете найти более подробную информацию о here на файлах Sitemap и информации о новостях Google и файлах Sitemap here.

Обычно вы можете найти файл Sitemaps.xml в файле robots.txt сайта. Например, Карта сайта Течкрунча просто

http://techcrunch.com/sitemap.xml

, который превращает эту проблему в разборе XML на регулярной основе. Если вы не можете найти его в файле robots.txt, вы всегда можете связаться с веб-мастером и посмотреть, предоставят ли он его вам.

UPDATE 1 24 октября 2012 10:45 утра,

Я говорил с одним из членов моей команды, и он дал мне дополнительные сведения о том, как мы справиться с этой проблемой. Я хочу действительно повторить, что это не простая проблема и требует много частичных решений.

Другое, что мы делаем, это отслеживать несколько «индексных страниц» для изменений в данном домене. Возьмите, например, «Нью-Йорк Таймс». Мы создаем одну индексную страницу для домена верхнего уровня по адресу:

http://www.nytimes.com/

Если вы посмотрите на страницу, вы можете заметить дополнительные подобласти, как мировой, США, политика, бизнес и т.д. Мы создаем дополнительные индексные страницы для всех них. У бизнеса есть дополнительные вложенные индексные страницы, такие как Global, DealBook, Markets, Economy и т. Д. Нередко URL-адрес имеет 20 страниц с индексом. Если мы заметим какие-либо дополнительные URL-адреса, добавленные в индекс, мы добавим их в очередь для сканирования.

Очевидно, это очень неприятно, потому что вам, возможно, придется делать это вручную для каждого сайта, который вы хотите обходить. Возможно, вы захотите рассмотреть возможность оплаты решения. Мы используем SuprFeedr и очень довольны этим.

Кроме того, многие веб-сайты по-прежнему предлагают RSS, который является эффективным способом сканирования страниц. Я бы порекомендовал обратиться к веб-мастеру, чтобы узнать, есть ли у них какое-то простое решение, которое поможет вам.

+0

Хороший совет для веб-сайтов, которые предлагают файлы Sitemap. К сожалению, я имею дело с некоторыми, которые не обновляют свои sitemaps или не имеют их вообще. – Swader

+0

Я добавил обновление. Надеюсь, это поможет вам. – sunnyrjuneja

6

Алгоритмы Google в основном закрыты, они не расскажут, как они это делают.

Я построил сканер, используя концепцию directed graph и основанный на скорости повторного обхода на страницах degree centrality. Вы можете считать веб-сайт ориентированным графом со страницами как узлами и гиперссылками как ребрами. Узел с высокой централизованностью, вероятно, будет чаще обновляться. По крайней мере, это предположение.

Это может быть реализовано путем хранения URL-адресов и связей между ними. Если вы сканируете и не выбрасываете какие-либо ссылки, график на сайт будет расти. Вычисляя для каждого узла на каждом сайте (нормализованный) входы и выходы, вы можете определить, какая страница наиболее интересна для повторного сканирования.

+0

Прочная теория, но как это применимо к моей первоначальной проблеме наличия каталога людей, которые распространяются по 2300 страницам, любые из которых могут быть обновлены в любой момент (таким образом, также изменяются все остальные, поскольку изменение каскадов в все последующие страницы)? – Swader

+0

Если какая-либо страница может быть обновлена ​​в любое время с той же вероятностью, и это все, что мы знаем, нет способа сообщить, какая страница будет обновляться дальше. В этом случае эта концепция не будет работать, по крайней мере. Идея, которую я дал, рассматривает каждую страницу по отношению к другим страницам сайта. Затем вы можете искать метод, который предсказывает использование повторного обхода * только * на основе самой страницы. – TTT

+0

В этом случае зеленый ответ может помочь, может быть, лучше, особенно ** актуальность ** и ** изменить частоту **. – TTT

Смежные вопросы