[webspider] Проблема элементов управления.

WP

^_^
[webspider] Проблема элементов управления.

Поиск у меня реализован с использованием индексации по средствам паука. Столкнулся с проблемой повторящихся страниц с разными URL, и БД засоряется сотнями ненужных данных. Например, URL'ы отличаются лишь присутствием "/" на конце, но это вариант банальный, и рассматривать его не стоит. Куда сложнее с параметрами вроде sort и order. Мне видятся два варианта решения проблемы. Либо фильтровать в ссылках многие параметры, но минусом такого метода является отсутствие универсальности, и необходимость добавлять в фильтр новые параметры. Либо же проверять уникален ли текст страницы. Естественно страницы динамические, и точного совпадения ждать не приходится, и искать по огромной базе дорого. Интересно, как с этой задачей справляются веб-поисковики? Ведь у них нет первого варианта, т.к. шаблонов очень очень много, а второй вариант дает высокую вероятность ошибки, и по базе сверять сложно. О, третий вариант, под {if !$_indexation_version}{/if} загнать все ссылки на сортировку, и прочее, робот же передает User-agent свой, а в скрипте его ловим, или можно сделать по onclick.
Какие будут мнения?

Спасибо.
 

phprus

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

WP

^_^
Если на то пошло, то для контрольную суммы есть crc32, а не md5).
А какие именно алгоритмы, не знаешь? Ведь это нужно делать на уровне СУБД. MySQL.
 

phprus

Moderator
Команда форума
WP
Вот описание метода «шинглов»
http://company.yandex.ru/articles/antispam.xml
А вот тема в которой рассматривается проблема сравнения текстов:
http://forum.dklab.ru/php/heap/AlgorithmOfComparisonOfTexts.html

Если использовать crc32 для базы более чем в 2^32 документов то в этой базе останется только 2^32 документов. Остальные будут неоправданно признаны копиями. А 2^32 = 4 294 967 296 те всего около 4-х миллиардов.
 

WP

^_^
Necromant
PHP отпадает, т.к. если каждый раз забирать из базы тысячи страниц и сравнивать,...
SOUNDS LIKE слишком неточный, годится лишь для маленьких текстов, да и сравнение несколько другое. Нужен similar_text.
phprus
А реализации есть?
 

phprus

Moderator
Команда форума
WP
Реализации чего? Метода «шинглов» или метода описанного на форуме dklab.ru? По идее метод описанный на dklab.ru не так сложно реализовать.
 

denver

?>Скриптер
[вырезано изобретение велосипеда марки конца 19 столетия]

Nevermind...
 

MadGreen

meninweb
почему не записывать хеш md5 в базу вместе с проиндексированной страницей и не сравнивать его? тогда пхп вполне справится...
тогда сравнивать урлы не придется - просто прогон страницы и потом сравнение хешей.... естественно не один раз будет применяться алгоритм индексирования к "лишним страницам", но это будет быстрее нежели вытаскивать тексты из базы и сравнивать их на лету...
 
Сверху