Последние годы, с интересом почитывая о персональных поисковых системах в веселых желтых коробках имени Google, я периодически гуглил по словам GSA, Google Search Appliance, reverse engineering и, чего греха таить, hack, DIY, disk dump и т.п. Но ничего, кроме официальных пресс-релизов и переписки счастливых (?) обладателей с группой поддержки, я не встречал.
Иногда звучали на форумах робкие вопросы вроде «а как бы рута мне получить» или «попасть в GSA по ssh», но на все подобные вопросы ответ был один — только группа поддержки Google знает пароли. И никому не скажет. Удивительно, но я не встречал в интернете никаких попыток собрать «хакинтош» на движке Гугла, или по живому коду разобраться в алгоритме ранжирования страниц.
Ситуация слегка изменилась в 2008 году, когда на волне эйфории от виртуализации, Google выкатил VGSA – бесплатную виртуальную машину для Vmware с ограниченной до 50 тысяч документов лицензией. Впрочем, особого энтузиазма это в интернете не вызвало, в 2009 году проект был свернут и большинство ссылок в Гугле на VGSA стали возвращать 404 (заметьте – самим же Гуглом). Ссылку на релиз от 2008 года можно найти довольно легко. Ссылка на версию 2009 сохранилась лишь на паре китайских сайтов.
О том, как я поставил vgsa_20090210 на ESX 5.1, зашел рутом, снял ограничение на размер индекса и увидел много чего интересного с точки зрения СЕО, можно
Пара слов о Google Search Appliance.
GSA – это карманная поисковая система, способная индексировать сайты, любые документы и базы данных. Позиционируется как локальный Google для крупных компаний, которые хотят иметь свой локальный специфический поиск, но никому его не показывать (или показывать). Сама коробка – это молотилка, которая индексирует не только указанные в настройках URL-ы (http://, smb://), но и любые данные (Oracle, MySQL, etc), которыми ее можно накормить через API. Набивание GSA данными, помимо собственного http/smb паука, производится через так называемые коннекторы с открытым кодом, написанные под различные базы данных и файловые системы. Они свободно доступны через Google Code и управляются посредством Connector manager.
Установка
VGSA виртуальная машина собрана на базе CentOS 5 Final. После распаковки архива мы получаем стандартный набор vmx/vmdk файлов для Vmware Player. Так как версия уже устарела, поставить ее на ESXi 5.1, через Vmware Converter, не получилось. Была создана новая VM с базовыми настройками для Redhat 5 32b, 2 Gb памяти и мелким диском, который был тут же удален и подменен vmdk из VGSA (подключен как SCSI parallel BusLogic).
После стандартного LILO пошла загрузка и появилась первая настораживающая надпись про шифрование:
Далее VGSA получила адреса по DHCP и появился ее стандартный экран:
По предложенному URL обнаружился нормально работающий гугловский движок, готовый к настройкам (с лицензией на 50 тыс. документов):
Для проверки проиндексировал первые 100 страниц хабра, со стандартной гугловской тактикой — 4 процесса на один домен/сайт. Краулер обходит все внутренние ссылки, а механизм индексации параллельно сортирует мусор и дубликаты. Одновременно это все ранжируется, считаются ссылки на страницу и из нее, каждой странице присваивается свой PR относительно корня (корень сайта всегда PR10 и тп.
Создав коллекцию интересных для меня сайтов (влкючить индексирование картинок пока не решился), быстро понимаю, что лимит в 50 тыс. страниц — это очень мало. Пора заглянуть под капот…
Под капотом
Пойманный на shift LILO, при любой попытке задать параметр просит пароль:
Еще раз беру дистрибутивный образ диска и смотрю его структуру. Fdisk ругается на незнакомый GPT, пробую parted:
[root@server /]# parted /home/vgsa/vgsa-flat.vmdk
GNU Parted 1.8.1
Using /home/storage/azureus/vgsa-flat.vmdk
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) p
Model: (file)
Disk /home/storage/azureus/vgsa-flat.vmdk: 36507222015B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17408B 2147484159B 2147466752B ext3 /
2 2147484160B 4294967807B 2147483648B linux-swap swap
3 4294967808B 36507205119B 32212237312B ext3 /export/hda3
(parted)
Первый раздел стартует с 17408. Монтируем его:
# mount -t ext3 -o loop,rw,offset=17408 /home/vgsa/vgsa-flat.vmdk /mnt/vgsa
и получаем корень VGSA — пока без главного раздела /dev/hda3.
Смотрим lilo.conf на предмет пароля:
# grep pass /mnt/vgsa/etc/lilo.conf
password=cmBalx7
Загрузившись в /bin/bash и перемонтировав корень в rw, пытаюсь сменить пароль рута – passwd ругается на неизвестную систему аутентификации. Дедовский метод подмены хэша в ‘vi /etc/shadow’ помогает. Опять обычная загрузка системы и, после окна приглашения, переключаюсь в tty2 и захожу рутом. Дальше отключаю iptables и начинаю искать лимит на 50000. Нахожу главный конфиг системы /export/hda3/5.2.0/local/conf/google_config, причем он обновляет дату с каждой загрузкой системы. Пробую первое, что приходит в голову: telinit 1, редактирую конфиг и меняю ENT_LICENSE_MAX_PAGES_OVERALL на 50 миллионов, sync, reboot. Удивительно, но система взлетает и показывает уже новый лимит…
Вкратце об интересных местах, на которые пока не хватает времени:
/export/hda3/5.2.0/local/google3/quality/, а именно rankboost/indexing/rankboost_cdoc_attachment_pb.py:
Там есть очень интересный момент:
self.link_count_ = 0
self.offdom_link_count_ = 0
self.paid_link_count_ = 0
self.ppc_link_count_ = 0
self.page_blog_score_ = 0
self.page_wiki_score_ = 0
self.page_forum_score_ = 0
self.page_ppc_spam_score_ = 0
self.has_link_count_ = 0
self.has_offdom_link_count_ = 0
self.has_paid_link_count_ = 0
self.has_ppc_link_count_ = 0
self.has_page_blog_score_ = 0
self.has_page_wiki_score_ = 0
self.has_page_forum_score_ = 0
self.has_page_ppc_spam_score_ = 0
— много азбучных SEO истин, но новенькое все же есть. Я всегда подозревал, что рекламная PPC кампания может принести как пользу, так и вред в органической выдаче. Видно, что Гугл наказывает за низкокачественные рекламные кампании. Пора думать о landing pages на off-domain….
Много интересного в /export/hda3/5.2.0/spelling/. С форматом пока не разобрался, но навскидку – там базы Гугла по синонимам и спряжениям на разных языках. Там же коллекция стоп-слов и масса весьма забавных фильтров, иногда отдающих маразмом:
en.spelling.filter.dnc.utf8:# Prevent correcting 'aryan' to 'jewish' or 'arabic'.
Общее впечатление от внутренностей — не однозначное. Видно, что писали питон-энтузиасты, причем с удовольствием. Но все-таки система напоминает набор костылей, на которых каким-то чудом это все бежит и кувыркается. Подозреваю, как и весь Гугл (запрещенный смайл).
Теперь, когда система из черного ящика превратилась в по-настоящему желтый — несколько мыслей о возможном ее применении:
- Последнее время не может не настораживать масштабное закручивание гаек в некогда свободном интернете. Появляются над-сети типа Tor и I2P, которые, рано или поздно, будут нуждаться в своей закрытой поисковой системе. Для участников хаба «Питон», написать коннектор для VGSA — дело несложное.
- Понятен интерес с точки зрения SEO.
- Локальный поиск для сайта, когда система индексирует только один сайт и является мощной системой внутреннего поиска (например через iframe). Подпилив напильником процедуру выдачи, можно на коленке сделать прекрасную бесплатную альтернативу Google Commerce Search — настоящий релевантный поиск по товарам, с картинками и ценами.
- Уверен, что это можно запустить и на железе, возможно с небольшим напильником в руке.
- … придумайте сами.
С удовольствием выслушаю ваши мысли по этому поводу.
Автор: Equin0x