![]() |
определения языка сайта
Привет всем!
Профи, у меня вот такой вопрос. Как можно, например с пмощью PERL или PHP, определить язык сайта, а так же его кодировку, если его нет в мета-тэге? Возможно ли такое или нет? Например, нужно найти, открывая сокеты перлом по заданным адресам, к слову, сайты только на украинском или грузинском. А, если сайт на русском языке, то его кодировку... реально это или нет? Заранее всем спасибо! |
делается это довольно легко ( алгоритмически )
береш словарь ( сколько языков / кодировок -- столько и словарей ) а потом выделяеш слово и ищеш его в словаре ( нашел -- знаеш язык / кодировку ( операцию повторить для увеличения вероятности ) ) как бы все |
Можно и подругому. Не знаю,как в Перле, но в ПХП можно это организовать с помощью переменных окружения.
Например вот-так:_SERVER["HTTP_ACCEPT_CHARSET"] |
Язык сайта определить можно, но далеко не точно и далеко не всегда. Теоретически можно проанализировать ответ сервера на предмет заголовка Content-Type. Если там windows-1251, то с большой вероятностью сайт русский. А если там UTF-8? Будем смотреть на порядковые номера символов, чтобы определить из какого они поддиапазона? А есть хитрые сайты, которые реагируют на Accept-Language, и подсталяют разные кодировки, а порой и разные языковые версии сайта. Неговоря уже о случайностях когда русские веб-мастера делают англ. сайты выводя всё в привычной им windows-1251...
Вообщем затея не из простых. Разумней зайти и посмотреть воочую какой там язык. А если речь идет о регистрации в каталоге (рейтинге, топе), то проше добавить select в форму добавления сайта. |
Если сделать высоковероятное предположение что в google сделано наиболее лучшим возможным способом, то получится что в большинстве случаев язык определить можно, но чуществуют и исключения (встречались напр. немецкие сайты которые гугл признал английскими)
|
Гугл роется в контенте. Это ресурсоемко, но для поисковика просто неизбежно. Заполучив тысячи ключевых слов не сложно определить язык.
|
а в какой базе данных хранят информацию поисковики?
|
В разных.
|
в разных?... да, но не во всех. например не в MySQL и не в Oracle... честно говоря сам не знаю почему, но как-то давно прочитал что SQL базы не подходят для работы в нормальных и немаленьких поисковых системах.
|
Логично. MySQL не предназначен для больших баз, а Oracle довольно медлителен. Рамблер например использует PostgreSQL. Монстры вроде Google, используют свои, адаптированные под конкретные нужды.
|
А что мешает использовать Google для выяснения языка сайта? :) Смотрим как формируется запрос на странице расширенного поиска (по сути нужно вынуть параметр языковых ограничений и site:www.xxx.yy), формируем таой запрос скриптом, запрашиваем Google. Если язык не угадан, имеем зелёную подпись на верху страницы. Вот только грузинского и украинского я там не нашёл :) Не очень быстро, зато не надо проверять по словарям, искать хитрый алгоритмический подход.
|
И яндекс и гугл могут пробанить подобных роботов. Прийдется использовать прикси, обновлять прокси-листы ... будет ли оно того стоить?...
|
посмотреть заголовки сервера или на крайний случай регулярным выражением посмотреть мета теги страницы, обычно все из вставляют
Цитата:
|
Цитата:
А какой принцип хранения и выдачи информации в поисковой сисеме Yandex? |
Цитата:
Причем Oracle для этого очень неплохая база, хотя DB2 мне кажется подошла бы больше. Хотя все зависит от конкретной реализации. На яндексе стоит несколько (точную цифру не помню, но явно больше 10) серверов с Ораклом и при каждом посещении центральная машина сама решает какой сервер будет выдавать ответ. |
Цитата:
- Яндекс не использует Oracle. |
мне один раз попадалась информация по структуре серверов и там был оракл, а сейчас уже не нашел, хотя может я и ошибся.
|
ну а всё-таки, какой серевер самый удобный для работы в поисковых? А где можно почитать о хранении и выборке данных в поисковиках? кто поможет ссылочкой?
|
|
Цитата:
|
цель? вот такая: :)
сделать поисковую систему, но понятно что не глобальную, а для работы, так сказать в определёных сетях. так вот, сайты нахожу, релевантность определяется, одним словом всё обрабатывается и последний вопрос, как мне их получше и где хранить, чтобы их можно было быстро и правльно потом находить. То есть к слову, обработано, ну например, 100 сайтов где слово ВАСЯ счиается ключевым, то есть это релевентное слово для этих сайтов, но они имеют разный вес. Скажем так, что ВАСЯ для первого сайта релевантно на 50%, для второго 10%, для тертьего 5% и т.д. И если задан поиска слова ВАСЯ нужно выдать сайты по релевантности. Но к слову ещё в том сайте что релевантно на 50% со словом ВАСЯ, оно релевантно со словом ПЕТЯ на 3%, то есть один сайт может иметь несколько разных слов, по которым можно его находить, но просто эти солва имеют различную важность. Не могу понять, как мне их хранить в базе, в какой структуре, чтобы их можно было быстро находить и выдавать по релевантнсоти. Повторю ещё раз, что нахожу сайты, обрабтку слов и определения релевантсрти ключевых слов уже сделал, а хранить и находить по правильному не получается. вот например так: www.xxx.ru - ВАСЯ 20%, ПЕТЯ 3%, ДИМА 1% и т.д. www.yyy.ru - Петя 15%, ДИМА11%, МАША 2% и т.д. www.zzz.ru - МАША 35%б ИВАН 31%, АЛЕКСЕФ12% и.т.д. и так далее теперь для разных поисковых слов разная сортировка... а как это сделать не знаю... Думаю ясно объяснил, если что-то не так, уточну.. спросите. хочу добавить, что сайтов будет много, и ещё может быть что релевантных слов будет больше, то есть может быть что для одного сайта может быть и ВАСЯ и ПЕТЯ и ДИМА по 10%, то есть несколько слов с одинаковй значимостью. |
все зависит от того какая будет логика при внесении данных.
Т.е. еслим индексы строить сразу при добавлении, то и MySQL подойдет. а если половину работы взвалить на БД то лучше DB2 или Oracle, думаю что многие вспонят еще PostgreSQL но он не долтягивает по интелектуальности до Oracle, но по простоте на одном уровне с MySQL |
вот меня и интересует, какя нужна логика? :) я этого не знаю. Всё что я знаю и имею, это адреса и их ключевые слова с весом их значимости.. а как лучше и всё остальное для меня вопрос :( не пойму какую структуру это всё должно иметь в базе... :idontnow: :help: :confused:
правда это уже другой вопрос..... не касающийся темы, но всё же... Вроде с базой определился :) |
За логику нужно платить, если согласен, дам тебе свою аську, там обсудим.
А какую базу выбрал, какой сервер бдет - публичный или выделенный? |
платить? :) пока рано платить :)
выбрал PostgreSQL. Почему? потому что MySQL простенький для такой задачи, с болшими базами postgre лучше раотает. оракл слишком тяжёлый для компа... PostgreSQL думаю более подходящее. Хотя вот было написано на другом форуме: - реляционные бд НЕ используются в СЕРЬЕЗНЫХ поисковиках - про ЛЮБЫЕ SQL СУБД забыть раз и навсегда. не знаю почему и не знаю что тогда? |
Про PosgreSQL согласен, он полегче, но и менее интелектуальный чем Oracle.
А адресочек форума не подкинете? |
:beer: вот я там http://portal.sysadmins.ru/board/viewtopic.php?p=425986 тоже постюсь
|
Я так и думал, ничего конкретного.
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
я согласен и не спорю с этим... но, как я сказал, что сейчас меня больше интеерсует не поиск, ранжировка, определение релевантности и т.д., так как всё это уже сделано, и "научная работа" выполнена :) и там мне помогли, я разобрался как сделать поиск и определить правильно ключевые слова и значимость слова и т.д., теперь меня просто интересует, как уже гворил, правильное хранение информации и выбор... ну ладно, думаю, что тема исчерпалась :) жаль что не разобрался пока... пойду на других форумах полазаю! :)
всем СПАСИБО и удачи!!! |
| Часовой пояс GMT +4, время: 13:28. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.