Stek: У некоторых хостеров просто приступ клинического идиотизма, который не позволяет им определить где оригинал а где копия. Особенно часто это выражается в симптомах "только по решению суда" или "покажите нотариально заверенные права на ваш контент".
В вашем случае легче забить на ситуацию, ну разве что при наличии времени и развлечения ради подать в суд. Но плеохост окажется каким нибудь перепродавцом не совершеннолетнего возраста, и сделать ничего вы не сможете. Но хостера родители таки выпорят :)
Ру хостинг - это что то вроде дикого запада, где пока морду не набьешь , ничего не получится :)
Обычно помогает 2 вещи:
1. Напомнить хостеру, что в случае подачи заявления и начала судебного разбирательства скорее всего "техническое обеспечение" будет изьято для проведения следственных действий.
2. Написать регистратору домена (и по восходящей) с просьбой проверить валидность контактов домена (конечно обьяснить, что вот, своровали а вы связаться не можете...)
3. Смотря что вы имеете ввиду. Парсится body и только, все тэги типа script, и т.д. "режутся", только чистый текст.
Как минимум - "правильный" UserAgent. И еще неплохо бы плюсовые баллы давать словам в тайтле, H1, H2, ..., strong 🙄
Планирую доработать анализ соотношения кол-ва ссылок (всех) к общему кол-ву текста. Думаю, это имеет смысл, дабы не покупать ссылки с "линкопомоек" и пустых страниц.
Только если научиться фильровать "постоянные" блоки на сайте (меню, например).
Спору нет. Только там INSERT ... ON DUPLICATE KEY UPDATE ;)
Хорошо, но линейность природы вашего кода это не убирает. Вы их должны отсортировать по значению (а не по индексируемой колонке) это больше чем линейная сложность. Я думал что вы с сортировкой просто ошиблись и не стал прикапываться. Еще и расчет значения вероятности имеет линейную сложность.
SELECT * FROM `urls` WHERE k <=0.8 and url = '1' ORDER BY k DESC LIMIT 1
Ясное дело, что 0.8 мне ГСЧ отдал.
CREATE TABLE IF NOT EXISTS `urls` (
`url` varchar(255) NOT NULL,
`keyword` varchar(50) NOT NULL,
`cnt` int(10) NOT NULL default '1',
`k` decimal(10,4) NOT NULL default '0.0000',
UNIQUE KEY `index` (`url`,`keyword`),
KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sums` (
`url` varchar(255) NOT NULL,
`sm` int(10) NOT NULL,
UNIQUE KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Как считается и апдейтится k из таблицы urls обьяснять думаю не надо ;)
Hkey: 1. У вас вставка инсерт + апдейт, что в разы медленее инсерт. Но это мелочи.
Ой, прям в разы? ;) К тому же, это вызываться будет ой как не часто.
2. При каждой загрузке страницы мы должны выбрать в среднем по тридцать титлов ссылок на другие страницы. Если конечно кеша нет. Т.е. мы должны выполнить вашу функцию 30 раз.
Не совсем понял, зачем.
Вы получаете список запросов, а не сам запрос выбрать один запрос пропорционально вероятности - линейное время. Поиск по индексу в MySQL - логарифмическое.
Почувствуйте разницу при LOG2(16)=4 LOG2(256)=8 LOG2(1024)=10. На копирование тех запросов, которые вы не выбираете теряется время и прочие мелочи.
Вы так уверенно бравировали знаниями SQL в топике, что я как-то упустил вероятность того, что вы не догадаетесь что вывод списка запросов + вероятность его выбрать сделана для демонстрации. В реальности - любимым генератором случайных чисел получили значение от 0 до 1 и выбрали тот 1 запрос, вероятность которого ближе всего к полученному значению.
Играюсь сейчас с парой табличек, занятные результаты.
Hkey: Попробуйте быстро получить случайный ключ для страницы с URL=$URL, причем вероятность выпадения ключа должна быть пропорциональна числу переходов по этому ключу.
Поскольку запрашивать данные (SELECT) тут приходится намного чаще, чем обновлять (UPDATE/INSERT), то:
1) храним в БД: урл странцы, ключ перехода с ПС, количество переходов
2) при переходе с ПС:
INSERT INTO table (url,key,cnt) VALUES ($url,$key,1) ON DUPLICATE KEY UPDATE c=c+1;
3) при выборе ключа для страницы:
select key, (cnt / (select sum(t1.cnt) from table t1 where t1.url = t2.url)) * 100 as pr from table t2 where t2.url = '$url' order by pr desc
Понятное дело, что вместо подзапроса имеет смысл сумму сразу получать и потом делить на константу во втором запросе. Или даже при апдейте table обновлять в другой таблице (url, sum_cnt) сумму - тогда еще проще.
Но даже без оптимизаций у меня на таблице с 10000 записями никаких тормозов не возникло.
innov: Как известно, url-адрес подобных доменов (.рф) в коде ссылок можно прописывать как русскими, так английскими буквами
Хотел уточнить - кому известно?
Мне например известно из RFC, что ссылки прописываются английскими буквами. И все.
То, что часть браузеров при определенных настройках умеет автоматом конвертить юникод-ссылки (на руском) в их XN представление - это конечно здорово, но... RFC как-бы первичен.
У некоторых хостеров просто приступ клинического идиотизма, который не позволяет им определить где оригинал а где копия. Особенно часто это выражается в симптомах "только по решению суда" или "покажите нотариально заверенные права на ваш контент".
В вашем случае легче забить на ситуацию, ну разве что при наличии времени и развлечения ради подать в суд. Но плеохост окажется каким нибудь перепродавцом не совершеннолетнего возраста, и сделать ничего вы не сможете. Но хостера родители таки выпорят :)
Ру хостинг - это что то вроде дикого запада, где пока морду не набьешь , ничего не получится :)
Обычно помогает 2 вещи:
1. Напомнить хостеру, что в случае подачи заявления и начала судебного разбирательства скорее всего "техническое обеспечение" будет изьято для проведения следственных действий.
2. Написать регистратору домена (и по восходящей) с просьбой проверить валидность контактов домена (конечно обьяснить, что вот, своровали а вы связаться не можете...)
sokol_jack, рад что вам понравилось :)
О, собирали из исходников с SF?
Как минимум - "правильный" UserAgent. И еще неплохо бы плюсовые баллы давать словам в тайтле, H1, H2, ..., strong 🙄
Только если научиться фильровать "постоянные" блоки на сайте (меню, например).
extheme с задачей не справился...
Это говорит только о том, что с данной тематикой пока никто не сталкивался :)
Обучить его - дело пары минут. ;)
Выложил плагин в паблик https://addons.mozilla.org/ru/firefox/addon/relesape/
Жду комментариев.
Очень даже приятная штука.
Сразу пару вопросов:
1. Что юзаете для морфологии?
2. Ковырять в сторону словосочетаний из 2-х, 3-х слов не пробовали?
3. Разбирается ли текст страницы "с точки зрения бота"?
4. Смотрели на функционал http://extheme.ru/ ? Есть планы по реализации подобного?
Апдейт намного медленее инсерта
Спору нет. Только там INSERT ... ON DUPLICATE KEY UPDATE ;)
Ясное дело, что 0.8 мне ГСЧ отдал.
Как считается и апдейтится k из таблицы urls обьяснять думаю не надо ;)
1. У вас вставка инсерт + апдейт, что в разы медленее инсерт. Но это мелочи.
Ой, прям в разы? ;) К тому же, это вызываться будет ой как не часто.
Не совсем понял, зачем.
Почувствуйте разницу при LOG2(16)=4 LOG2(256)=8 LOG2(1024)=10. На копирование тех запросов, которые вы не выбираете теряется время и прочие мелочи.
Вы так уверенно бравировали знаниями SQL в топике, что я как-то упустил вероятность того, что вы не догадаетесь что вывод списка запросов + вероятность его выбрать сделана для демонстрации. В реальности - любимым генератором случайных чисел получили значение от 0 до 1 и выбрали тот 1 запрос, вероятность которого ближе всего к полученному значению.
Играюсь сейчас с парой табличек, занятные результаты.
Попробуйте быстро получить случайный ключ для страницы с URL=$URL, причем вероятность выпадения ключа должна быть пропорциональна числу переходов по этому ключу.
Поскольку запрашивать данные (SELECT) тут приходится намного чаще, чем обновлять (UPDATE/INSERT), то:
1) храним в БД: урл странцы, ключ перехода с ПС, количество переходов
2) при переходе с ПС:
3) при выборе ключа для страницы:
Понятное дело, что вместо подзапроса имеет смысл сумму сразу получать и потом делить на константу во втором запросе. Или даже при апдейте table обновлять в другой таблице (url, sum_cnt) сумму - тогда еще проще.
Но даже без оптимизаций у меня на таблице с 10000 записями никаких тормозов не возникло.
Если не так срочно, что на вчера - то вечером быстренько соберу и отправлю.
Вы уточните вначале, что для вас "качественный контент" и "массовость".
А то может мы говорим о плохо распознаном скане и 5к символов в день :)
Как известно, url-адрес подобных доменов (.рф) в коде ссылок можно прописывать как русскими, так английскими буквами
Хотел уточнить - кому известно?
Мне например известно из RFC, что ссылки прописываются английскими буквами. И все.
То, что часть браузеров при определенных настройках умеет автоматом конвертить юникод-ссылки (на руском) в их XN представление - это конечно здорово, но... RFC как-бы первичен.
это каким образом? адрес то php
И? В настройках вебсервера указывается чем обрабатывать определенные расширения.
Так что никто не мешает в файлы с расширением php записывать ASP VBscript и обрабатывать на сервере как ASP. И наоборот.
IIS последних версий отлично справляются, например.