Лучшие практики для использования URL в качестве ключа базы данных - PullRequest
0 голосов
/ 13 апреля 2011

Я собираюсь написать сканер, сохраняя результаты в базе данных (MongoDB).

Конечно, важно использовать URL в качестве одного из возможных параметров запроса. Но это также проблематично:

  • URL-адреса могут быть очень длинными, а MongDB имеет конечную максимальную длину ключа
  • Существует много синонимов контента, и вы не узнаете об этом, сканируя только одну страницу.
  • Что делать для HTTP 301, 302, 303, 307 и т. Д. Сохранить исходный URL-адрес или новое местоположение? Особенно это касается укороченных ссылок.
  • Проблема «Last.fm». lastfm.com == last.fm ~ = lastfm.it (и т. д.), и сайт не использует 30-кратный код результата для указания. Он просто обслуживает контент из нескольких доменов.

Цели для этой базы данных:

  • Учитывая любой URL, который может или не может быть в базе данных, позвольте мне запросить, чтобы узнать, сканировал ли я этот документ ранее с достаточной точностью.

Конечно, любая схема, кроме "просто сканируйте ее и сохраняйте точный URL, не беспокоясь о дубликатах", будет иметь некоторое количество ложных срабатываний. Ложноположительным будет URL-адрес, который, как мне кажется, совпадает с ранее просканированным, но на самом деле он другой.

1 Ответ

1 голос
/ 13 апреля 2011

I думаю, что по умолчанию, ваш ключ может быть чем-то вроде 1000 байтов. У вас действительно будут большие URL? Что еще хуже, я почти уверен, что это жестко заданная константа, которую вы можете изменить.

По другим вашим пунктам:

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

Что делать для HTTP 301, 302, 303, 307 и т. Д. Сохранить исходный URL-адрес или новое местоположение? Особенно это касается укороченных ссылок. - Я думаю, что пункты назначения ... что, если кто-то сократил один и тот же пункт назначения несколько раз? Что делать, если срок действия сокращенной ссылки истекает, или сокращающее устройство отключается? Я думаю, что это гораздо более вероятно, чем то же самое, что происходит с URL-адресом назначения.

Проблема "last.fm". lastfm.com == last.fm ~ = lastfm.it (и т. д.), и сайт не использует 30-кратный код результата для указания. Он просто обслуживает контент из нескольких доменов. - Не могли бы вы написать простой алгоритм проверки доменов, которые могут быть похожими? Last.fm содержит 6/9 символов lastfm.com, а первые 6 идентичны. Если бы вы также хранили немного метаданных, вы могли бы проверить, является ли совпадение с высоким уровнем релевантности идентичным документом.

Учитывая любой URL, который может или не может быть в базе данных, позвольте мне запросить информацию, если я ранее сканировал этот документ ранее, с разумной точностью. - См последний пункт

Надеюсь, это поможет!

...