LINUX.ORG.RU

Как «проиндексировать» несколько сайтов?

 , , , ,


1

1

В продолжении предыдущей темы.

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

Теперь опишу, как, на мой взгляд, это нужно реализовать: необходимо «проиндексировать» страницы сайтов так, как это делают поисковики. Определив, является ли страница «страницей с игрой», парсим все что нужно, добавляем в БД (в какую, кстати?).

Получив запрос на поиск от пользователя, просто выполняем запрос к БД, получаем результат. Достоинства: выдача будет работать быстро, можно добавить тыщщи магазинов. Недостатки: понадобится достаточно мощный сервак, ну и необходимость в индексации хотя бы раз в сутки.

Все выше - абсолютное ИМХО, я могу ошибаться на 100%. Собственно по этому, я и прошу совета.

Deleted

Ответ на: комментарий от comp00

Best-practice это API

Кто ж спорит, надо договариваться а не бросаться сразу код писать...

Вполне могут положить постгресс. Не совсем до отвала, но до длительных задержек при выполнении запроса - вполне.

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

Потенциальным пользователям магазина будет, мягко говоря, некомфортно.

Будем рассчитывать, что тс будет умным и веб-морду будет гонять на кеширующей прослойке.

И что, масштабировать кластер, из-за того что подобные школяры с образованием в 9клвссов в цикле http запросы спамят ?

А это мы увидим в следующих частях «как бороться с dos» :)

Deleted
()
Ответ на: комментарий от iluha16

И засорять память её представлением с помощью каких то заумных парсеров XML

Не всё так однозначно. Сравните стоимость парсинга xml и regex. Даже не беря в расчёт варианты использования readbility.

Самый смак с регулярками начнутся когда одна «хорошо написанная» регулярка начнёт подвешивать поток.

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

Deleted
()
Ответ на: комментарий от comp00

Идиот! Какие 500k веб запросов. Там 86 страниц каталога и скрипт делает ровно 86 запросов к серверу. Когда браузерный юзер просматривает каталог его браузер сделает в несколько раз больше запросов т.к. с каждой страницей он будет подгружать ещё картинки, css, скрипты. Если твой кластер не может потянуть этого тогда тебе надо самому в 9 классе учиться а не кластеры собирать.

То что с API даже ты сможешь данные взять я не сомневаюсь. Там думать то не надо, даже ребёнок сможет из JSON скопировать нужные части в БД, достаточно оператор присваивания изучить.

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

iluha16
()
Ответ на: комментарий от Deleted

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

оптимизационный граф сайта

что это?

iluha16
()
Ответ на: комментарий от Deleted

500к - это только внешняя нагрузка индексатора.

О чем и речь

при нормальной архитектуре бд и кеширования очереди краулерами - с таким объемом постгресс должен справиться без серьезных проблем

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

comp00 ★★★★
()
Ответ на: комментарий от iluha16

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

Твои «86 страниц» - это лишь оптимизационный граф для частичной индексации сайта. И это еще очень простой вариант.

Суть же в том, что данные собирать надо не с этого графа, а со страниц приложений. Надо делать get-запрос на страницу _каждого_ приложения из списка. Рассматриваемый тобой случай - 2500 наименований.

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

Идите лучше учитесь, а не пишите скрипты за 5 минут. Возможно, если выучитесь в этом направлении - познакомимся лично, у меня на собеседовании. А пока учитесь.

Deleted
()
Ответ на: комментарий от iluha16

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

Что за парсер?

Deleted
()
Ответ на: комментарий от comp00

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

Да и мавры не без греха. В Azure у бд-инстанстов доступность далеко не 99,99% получается...

Deleted
()
Ответ на: комментарий от Deleted

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

Deleted
()
Ответ на: комментарий от Deleted

Я правильно понимаю что фразой «оптимизационный граф для частичной индексации сайта» вы называете последовательность просмотра страниц парсером, мы об одном и том же говорим?

Я понимаю что бывает нужно получать отдельные страницы продуктов/приложений если в каталоге не содержится нужная информация. Ну неужели вы будете утверждать что 2500 запросов в день завалит сервак. Это же один запрос в 34 секунды. Эти магазины они вообще на что рассчитаны тогда, чтобы раз в день покупатель парочку продуктов посмотрел и закрыл побыстрее что ли?

Идите лучше учитесь, а не пишите скрипты за 5 минут.

Чему конкретно учиться? Копировать данные из JSON я умею.

iluha16
()
Ответ на: комментарий от Deleted

Что за парсер?

Не помню точно. Лучше посоветуйте хороший для следущего раза.

iluha16
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.