Содержание
Поисковые технологии или в чем загвоздка написать свой поисковик / Хабр
Когда-то давно взбрела мне в голову идея: написать свой собственный поисковик. Было это очень давно, тогда я еще учился в ВУЗе, мало чего знал про технологии разработки больших проектов, зато отлично владел парой десятков языков программирования и протоколов, да и сайтов своих к тому времени было понаделано много.
Ну есть у меня тяга к монструозным проектам, да…
В то время про то, как они работают было известно мало. Статьи на английском и очень скудные. Некоторые мои знакомые, которые были тогда в курсе моих поисков, на основе нарытых и мной и ими документов и идей, в том числе тех, которые родились в процессе наших споров, сейчас делают неплохие курсы, придумывают новые технологии поиска, в общем, эта тема дала развитие довольно интересным работам. Эти работы привели в том числе к новым разработкам разных крупных компаний, в том числе Google, но я лично прямого отношения к этому не имею.
На данный момент у меня есть собственный, обучающийся поисковик от и до, со многими нюансами – подсчетом PR, сбором статистик-тематик, обучающейся функцией ранжирования, ноу хау в виде отрезания несущественного контента страницы типа меню и рекламы. Скорость индексации примерно полмиллиона страниц в сутки. Все это крутится на двух моих домашних серверах, и в данный момент я занимаюсь масштабированием системы на примерно 5 свободных серверов, к которым у меня есть доступ.
Здесь я в первый раз, публично, опишу то, что было сделано лично мной. Думаю, многим будет интересно как же работают Яндекс, Google и почти все мне известные поисковики изнутри.
Есть много задач при построении таких систем, которые почти нереально решить в общем случае, однако с помощью некоторых ухищрений, придумок и хорошего понимания как работает железячная часть Вашего компьютера можно серьезно упростить. Как пример – пересчет PR, который в случае нескольких десятков миллионов страниц уже невозможно поместить в самой большой оперативной памяти, особенно если Вы, как и я, жадны до информации, и хотите кроме 1 цифры хранить еще много полезностей. Другая задача – хранение и обновление индекса, как минимум двумерной базы данных, в которой конкретному слову сопоставляется список документов, на которых оно встречается.
Просто вдумайтесь, Google хранит, по одной из оценок, более 500 миллиардов страниц в индексе. Если бы каждое слово встречалось на 1 странице только 1 раз, и на хранение этого надо было 1 байт – что невозможно, т.к. надо хранить хотя бы id страницы – уже от 4 байт, так вот тогда объем индекса бы был 500гб. В реальности одно слово встречается на странице в среднем до 10 раз, объем информации на вхождение редко когда меньше 30-50 байт, весь индекс увеличивается в тысячи раз… Ну и как прикажите это хранить? А обновлять?
Ну вот, как это все устроено и работает, я буду рассказывать планомерно, так же как и про то как считать PR быстро и инкрементально, про то как хранить миллионы и миллиарды текстов страниц, их адреса и быстро искать по адресам, как организованы разные части моей базы данных, как инкрементально обновлять индекс на много сотен гигов, ну и наверное расскажу как сделать обучающийся алгоритм ранжирования.
На сегодня объем только индекса, по которому происходит поиск — 57Gb, увеличивается каждый день примерно на 1Gb. Объем сжатых текстов – 25Gb, ну и я храню кучу другой полезной инфы, объем которой очень трудно посчитать из-за ее обилия.
Вот полный список статей которые относятся к моему проекту и описаны здесь:
0. Поисковые технологии или в чем загвоздка написать свой поисковик
1. С чего начинается поисковик, или несколько мыслей про crawler
2. Общие слова про устройство поиска в Web
3. Dataflow работы поисковой машины
4. Про удаление малозначимых частей страниц при индексации сайта
5. Методы оптимизации производительности приложения при работе с РБД
6. Немного про проектирование баз данных для поисковой машины
7. AVL деревья и широта их применения
8. Работа с URL и их хранение
9. Построение индекса для поисковой машины
Как создать свой поисковик и возможно ли это сделать самостоятельно?
Каждый пользователь в интернете может назвать несколько популярных поисковых систем. Но при этом некоторые из них не оставляют идею создать собственную такую систему, поэтому вопрос: «Как создать свой поисковик?» остается на слуху.
Свой поисковик может быть двух типов:
большая поисковая система, которая будет работать по всему интернету и составлять конкуренцию Google, Яндекс, Bing и др.;
небольшой поисковик, организованный на своем сайте с различными свойства поиска.
Как создать свой поисковик и создать конкуренцию известным «поисковым гигантам»
Создать свой поисковик наподобие Гугла и Яндекса, на самом деле, не так сложно. Любой более-менее уверенный в себе разработчик сможет это сделать. Любой поисковик состоит из 3-х основных элементов:
Пользовательский интерфейс.
Базы данных с сайтами для их индекса.
Поисковый робот, который будет обходить сайты и обновлять/добавлять информацию о них в базу данных.
Техническая реализация поисковой системы не так сложна, как кажется. Плюс в сети есть уже много готовых скриптов как платных, так и бесплатных, с помощью которых вы сможете реализовать свою идею. Создать свой поисковик можно самостоятельно или в небольшой команде. В принципе, если найти соратников в команду, которые готовы поработать на голом энтузиазме, создать свой поисковик можно практически бесплатно.
Но проблема в другом. Сможете ли вы создать действительно конкурирующий программный продукт? Ведь для того, чтобы конкурировать с известными поисковиками, вам нужно будет:
нанять высококвалифицированных специалистов и организовать им рабочее пространство;
оборудовать собственный дата-центр или арендовать мощности у надежной компании;
быть готовым в течение нескольких лет терпеть убытки.
И при этом никто не даст гарантий, что ваш поисковик станет популярным и вы сможете его монетизировать. Потому что пока вы будете развивать свой продукт, Гугл с Яндексом также будут развиваться. А чтобы их «переплюнуть», вам нужно будет внедрить в свой продукт какую-нибудь «фишку» или ноу-хау, чтобы переманить к себе пользователей — это что касается функционала. А с технической стороны ваш поиск должен быть точнее, быстрее и эффективнее, чем у ваших конкурентов, чтобы пользователи это «почувствовали» и перешли на вашу сторону.
Почему люди в основном пользуются Гуглом или Яндексом (или другими)? Потому что им там комфортно и им там нравится. Поэтому, чтобы пользователи перешли именно к вашему поисковику, вы должны стать лучше.
Вот и получается, что создать свой поисковик нетрудно, но вот развивать его и сделать конкурентоспособным — на это потребуется немало усилий и финансовых вложений. Но с другой стороны, Гугл тоже когда-то был в позиции «новичка», а в кого он превратился спустя годы упорного труда — мы все прекрасно видим.
Другое дело с локальными поисковиками, которые вы можете организовать на собственном сайте.
Как создать небольшой локальный поисковик на своем сайте
Небольшой локальный поисковик — это более «приземленная» идея поисковой системы. И в некоторых ситуациях подобный поисковик будет работать эффективнее, чем глобальный Гугл с Яндексом. Например, когда вам нужно ограничить объем поиска. Допустим, у вас есть некий веб-ресурс, который ведет взаимоотношения с 500 поставщиками и 400 различными партнерами, плюс в качестве дополнительной информации вы используете еще 900 разных источников. Вы можете организовать собственную поисковую систему на 1000+ источников, чтобы вашим клиентам было проще искать нужную информацию, касающуюся ваших услуг или товаров. Если они будут это делать через глобальную поисковую систему, то в выдаче у них будет очень много «мусора», который, по сути, им никогда не пригодится. А ваша ПС даст именно те результаты, которые нужны вашим клиентам.
В качестве дополнения собственная тематическая ПС — это:
удобство поиска для ваших клиентов;
дополнительный способ монетизации вашего проекта;
много плюсов к вашему престижу, брендингу и узнаваемости.
Что самое интересное — подобные локальные системы организовать довольно просто. В сети есть масса готовых решений по этому поводу. Самое узнаваемое решение — это создать свой поисковик, используя поисковый потенциал Google. Для этого пройдите по ссылке.
Заключение
Теперь вы знаете, как можно создать свой поисковик. Если это будет глобальная поисковая система, то к этому нужно подготовиться финансово и морально. Если локальный поисковик на собственном сайте, то самый простой способ — это использовать готовое решение. При этом если вы с программированием на «ты», то для вас не составит труда создать свой собственный поисковик с нуля.
Если бы я захотел создать поисковую систему, с чего бы я начал?
Я написал это для блога, который у меня был давным-давно…. его больше нет в сети, так что.. вот оно! :
Как писать в поисковой системе
Даррен Роуз с сайта probolgger.net проводит проект группового письма на тему «Как сделать». Это один из немногих блогов, которые я читаю регулярно, поэтому я думаю, почему бы не написать что-нибудь стоящее для разнообразия, а не мою стандартную жестокую тираду, где я закончу тем, что угрожаю ударить Уго Чавеса ножом в горло.
Решил написать «Как написать поисковик». Я выбрал эту тему по двум причинам:
- В Интернете не так много хорошей информации по этому поводу.
- В настоящее время я пишу один для одного из моих клиентов.
Мой клиент является крупным интернет-магазином, поэтому я не ищу по всему Интернету только их сайт, а точнее только товары, которые продаются на их сайте. Тем не менее, те же методы могут быть использованы для написания более сложного, используемого для поиска в Интернете. Я знаю, что это не технический блог, поэтому я не буду слишком углубляться в технические подробности, а также не буду обсуждать требования к оборудованию\вычислительной мощности или веб-сканирование.
Я использую довольно простую технику, у меня есть таблица (tblKeywords) с тремя полями:
- Itemid (если вы выполняете поиск в Интернете, это будет URL)
- Ключевое слово (индексированное ключевое слово)
- Вес (это числовое значение от 1 до 100, чем выше это число, тем более значимым (весом) является ключевое слово)
*PK=ItemID+ ключевое слово
Первое, что я делаю, это собираю отдельные слова из любого подходящего места. Для моего клиента я вытащу слова из таблицы продуктов. В частности, из полей Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 и т. д. Если вы индексируете веб-страницы, вы можете извлечь данные из текста страницы, заголовка страницы, URL-адреса или ссылок на других страницах, которые ссылаются на индексируемую страницу.
Значение веса определяется тем, откуда пришло ключевое слово. Например, в моем случае артикул производителя предмета получит вес 100, а слово из названия предмета может получить вес 25. Слово из ItemLongDescription может получить вес 5. Если вы индексируете веб-страницы, слова из заголовка страницы может получить вес 75, в то время как слово, выделенное жирным шрифтом из текста страницы, может получить вес 10. Если слово повторяется более одного раза или\и более чем в одном месте, вы должны суммировать вес для каждого раза такое случается. Например, если слово «Рубашка» происходит из двух мест для ItemId = 12345, ItemName (вес 25) и появляется дважды в ItemLongDescription (вес 5 x 2 = 10), слово «рубашка» будет иметь общий вес 35 для ItemId. =12345.
Если кто-то ищет «розовая рубашка», я ищу в своей таблице все экземпляры слов «Розовая» или «Рубашка» и суммирую веса. Отображение предметов с наибольшим общим весом вверху.
SQL:
Выберите Itemid, сумму (вес) как totWeight из tblKeywords сгруппировать по itemId, имеющему ключевое слово в («розовый», «рубашка»)
Итак, вот она, простая (и быстрая) поисковая система. Конечно, есть еще что сделать, например убрать знаки препинания, HTML-код и бесполезные ключевые слова, такие как «и», «если», «или». Это не относится к поиску ключевых фраз, но вы можете использовать аналогичную систему для фраз, если сможете выяснить, где они начинаются и заканчиваются.
Как писать для пользователей и поисковых систем
Вы хотите писать контент, который удобен для пользователей и хорошо работает в поисковых системах в 2019 году.
Но как вы это делаете?
Вы можете начать с просмотра тех статей, которые хорошо зарекомендовали себя в 2018 году.
Определенные типы контента широко распространялись в социальных сетях и маркетинговых сообществах.
Фактически, некоторые из лучших статей попали более чем в одну категорию.
Но наряду с общей беседой, которую создают эти типы статей, у них есть большой потенциал, чтобы поднять ваш сайт на вершину результатов поиска.
Обязательно сверяйтесь с этим списком всякий раз, когда вы пишете статьи для своих сайтов или своих клиентов в 2019 году.
1. Сильные мнения
Google, законы и потребители постоянно меняются, а значит, маркетинг тоже постоянно развивается. Любой, у кого есть кожа в игре, вероятно, имеет мнение о том, что происходит в нашей отрасли.
Таким образом, статьи с сильными мнениями пользуются успехом у читателей.
Вы либо читаете произведение, либо киваете головой, соглашаясь со всеми пунктами, которые делает автор. Или вы ненавидите читать, зная, что поделитесь этим со своими друзьями, которые также думают, что автор не в себе.
В любом случае, статьи такого типа вызывают массу лайков, репостов, комментариев и общего трафика из-за их подстрекательского характера.
Помогает, если название статьи слишком громкое:
- Google AMP может отправиться в ад
- Иногда все, что нужно для Э-А-Т, — это бутерброд
- Гэри Вайнерчук ошибается, ошибается, ошибается, ошибается, ошибается насчет СМИ
Это несколько статей, которые я видел в Интернете, которыми поделились со мной, когда я спросил людей о любимых статьях 2018 года, или которые появляются в топ-списках, таких как списки трендов на Sparktoro.
Когда вы ищете заголовки в Твиттере, вы видите бесконечные пересылки, и я думаю, что разговоры на эти темы были многочисленными и, возможно, даже горячими.
Но иногда вам нужно заявить о себе и стать лидером в разговоре, чтобы привлечь трафик и создать аудиторию.
Что это значит для маркетологов?
Если вы сильно чувствуете что-то в своей нише, беритесь за клавиатуру. Вероятно, есть и другие люди, которые согласятся с вами и сделают следующий шаг под вашим руководством.
Несогласные обязательно найдутся. Но если у вас есть мнение о чем-то, ключ в том, чтобы подкрепить его доказательствами.
Напишите о своем твердом мнении.
Почему этот контент хорошо работает в поиске?
Твердые мнения могут не попасть в избранный фрагмент (черт возьми, они могли бы , если правильно отформатировать), но есть вероятность, что огромное количество ссылок и внимание, которое они получают в других местах, могут означать, что они продвигаются вверх в рейтинге.
Люди с твердым мнением по темам также обычно знают, о чем говорят. Авторы, которые увлечены чем-то, обычно являются экспертами в этой области и имеют авторитет в теме, чтобы сформировать противоречивое мнение.
Это означает, что у них, вероятно, уже есть целый ряд других факторов в их пользу на их сайтах, и их последнее сообщение с мнением — просто вишенка на этом торте веб-сайта.
Хотя статья сама по себе не может быть решающим фактором при поиске, люди, которые пишут подобные статьи, часто уже занимают высокие позиции в поиске по похожим темам.
2. Исходные данные и эксперименты
Люди курируют данные. Будь то доказательство точки зрения, в которую они твердо верят, чтобы показать своему боссу, что они должны инвестировать в стратегию или решение, сообщить о своем следующем шаге и т. д., мы — общество, управляемое данными.
Я имею в виду, что мой муж изучает данные о покупках вплоть до звуков, издаваемых клавиатурой, когда вы печатаете.
В нас как в обществе заложен сбор данных. Ahrefs говорит, что одними из самых популярных поисковых запросов Google в 2018 году были такие вещи, как погода, карты, переводы, новости, калькуляторы и т. д. Все это основные способы сбора данных для принятия решений.
В маркетинге у нас есть преимущество, заключающееся в том, что у нас всегда под рукой множество точек данных с реальными числами. Куда мы должны инвестировать наши рекламные доллары? Наш CAC выше в четвертом квартале, чем во втором? Почему?
Мы гордимся тем, что принимаем решения, основанные на цифрах, а не на «внутренностях».
Когда другие люди могут проверить маркетинговые теории и либо дать вам основу для того, чтобы попробовать это самостоятельно, либо полностью избежать чего-то катастрофического, мы считаем эти маркетинговые статьи чрезвычайно полезными:
Материалы с оригинальными данными не только вызывают много разговоров в социальных сетях и репостах в целом, но и получают массу ссылок. Энди Крестодина рассказал об этом на CTA Conf в этом году, сказав, что проекты данных, которые он начал некоторое время назад, стали одними из главных драйверов трафика на его сайт.
Что это значит для маркетологов?
Нелегко придумывать проекты для исходных данных только ради сбора данных. И, давайте будем честными, у нас не у всех есть на это время.
Я предлагаю подумать о проектах, которые вы уже планируете в следующем квартале, и придумать несколько гипотез, которые вы потенциально могли бы проверить при регулярном выполнении этого проекта.
Крестодина предложила выдвинуть гипотезу и нанять виртуального помощника для сбора данных. Придумайте опрос, относящийся к вашей отрасли, и разошлите его как можно большему числу людей.
Собирайте данные, проводите эксперименты и пишите об этом, чтобы другие могли последовать вашему примеру.
Почему этот контент хорошо работает в поиске?
Мы живем в эпоху Google, поэтому все, что мы хотим, находится у нас под рукой за считанные секунды.
Нужны подтверждающие данные для плана проекта, цифры, подтверждающие правильность вашей теории, или отправная точка для вашего собственного предприятия? Это все поиск.
Поскольку люди внимательно следят за числами и данными, они всегда будут хорошо работать в поисковой выдаче, ориентированной на маркетинг.
3. Практическая информация и инструкции
Наряду с исходными данными маркетологи любят полезную информацию. Дайте нам хорошее «как сделать» что-то новое или облегчить старую задачу, и мы отправимся в город. Мы также любим хорошие истории ужасов, чтобы знать, каких советов нам следует избегать.
Я люблю маркетинговые и особенно SEO-сообщества за их готовность делиться данными, идеями, успехами и неудачами.
Я могу зайти в Твиттер и спросить своих друзей по SEO, что они думают о проблеме, с которой я столкнулся, и получить пару разных решений, которые можно сразу попробовать.
Эти статьи похожи на того друга, который помогает вам, но в большем масштабе. Когда лидер отрасли показывает вам, как он достиг воспроизводимых результатов, это похоже на то, как наставник показывает вам что-то новое, что вы можете попробовать в своем следующем проекте.
Вот несколько статей от Sparktoro Trending и от людей, которые прислали мне свои любимые маркетинговые статьи 2018 года:
- 37 SEO ужасов с передовой
- Как получить больше показателей ключевых слов для ваших целевых ключевых слов
- Как ранжироваться по основным терминам
Вспомните, когда вы в последний раз видели заголовок в Твиттере с заголовком «Как сделать», и это было точное решение проблемы, с которой вы столкнулись. Скорее всего, вы ахнули и подумали: «Наконец-то!»
То же самое и с поиском. Мы все ищем наилучшие способы достижения наших профессиональных целей самым быстрым, но самым тщательным образом.
От простых вещей, таких как «Как настроить рекламу в Facebook», до более сложных вопросов, таких как «Как восстановиться после штрафа Google», нет ничего лучше, чем найти ответы, которые вам нужны, от кого-то, кто это понял.
Что это значит для маркетологов?
Запишите свои процессы. Вы удивитесь, узнав, кому будет полезно узнать, как вы работаете.
Вы, наверное, думаете: «Да, это просто XYZ». Но почти гарантировано, что вы делаете что-то немного иначе, чем кто-то другой, и они хотели бы получить от вас пару советов.
Если вы нашли совершенно новый способ делать что-то, это еще веская причина написать инструкцию.
Почему этот контент хорошо работает в поиске?
Все с чего-то начинают, и большинство из нас ищет поиск, когда не знает, как что-то сделать, или ищет лучшие и более эффективные способы сделать это.
Есть причина, по которой AnswerThePublic, визуальный инструмент исследования ключевых слов, имеет ветки вопросов, рассказывающие нам о множестве различных способов, которыми люди запрашивают поисковые системы.
Когда вы смотрите на поисковый запрос «установить туалет», возможности темы безграничны:
Больше людей, чем когда-либо, используют YouTube, результаты поиска и инструкции, чтобы сделать что-то самостоятельно (мой муж -сам, прежде чем нанять на работу какого-нибудь профессионала — не всегда лучшая идея).
Следующим этапом этих инструкций и практических идей, вероятно, является то, как мы можем передать контент в голосовой поиск, поскольку мы попросим нашего голосового помощника прочитать их нам.
4. Популярные авторы в отрасли
Некоторые люди в сфере поиска и маркетинга всегда привлекают толпу в Интернете. Подобно статьям с твердым мнением, читатели либо любят, либо ненавидят этих людей. Но трудно сказать, что они не влияют.
Эти люди, как правило, уже некоторое время создают тип контента из этого списка и создали такое количество подписчиков, что получают трафик исключительно потому, что их упоминают, цитируют или называют авторами.
Маркетологи с нетерпением ждут, когда эти громкие имена расскажут все о прогнозах, тенденциях, больших данных и других знаниях, на изучение которых у нас, «обычных людей», не всегда есть время или доступ.
- О SEO в поисковой выдаче – Приводящая в бешенство реальность будущего поиска, Рэнд Фишкин
- Отчет Мэри Микер об интернет-тенденциях за 2018 год
- лайфхаков для локального поиска, которых вы, вероятно, не видели раньше Даррен Шоу
Мало того, что громкие имена часто обладают лучшими ресурсами для исследований, сбора данных и публикации проницательных материалов, но мы верим, что они стали знаменитостями, делая все правильно и хорошо.
Копируя то, что они делают, или используя их выводы для формирования собственных, мы стремимся к их уровню успеха.
Что это значит для маркетологов?
Если вы не Оли Гарднер или Мари Хейнс, не волнуйтесь. Они тоже не с того начинали. Скорее всего, они регулярно публикуют контент с сильными мнениями, данными, практическими рекомендациями и т. д. и получили признание благодаря хорошей работе и результатам для клиентов.
Такие люди, как вы и я, можем просто продолжать, пытаясь сделать то же самое для наших клиентов и нашего бизнеса.
Если вы хотите попасть в список лучших маркетологов, у меня есть один совет: заявите о себе. Подать заявку на выступления. Присоединяйтесь к онлайн-сообществам (например, #SEOChat!) и участвуйте.
Почему этот контент хорошо работает в поиске?
Скорее всего, если кто-то является известным маркетологом, он знает, как работать в Интернете. И они делают это уже некоторое время.
Крупные имена в SEO и цифровом маркетинге уже некоторое время находятся в рейтинге, имеют признание в отрасли и могут создавать домены на основе своей репутации и огромного количества людей, активно ищущих их по имени.
5. Социальные проблемы в промышленности
На мой взгляд, это перспективная категория. Маркетинг и поиск становятся немного мета, но я думаю, что это важная тенденция.
Цифровой маркетинг, поисковая оптимизация, маркетинговый консалтинг, маркетинговое программное обеспечение и т. д. Во всем этом за кулисами всем заправляют люди. Не менее важна и человеческая сторона дела.
Открыто рассказывая о личных вещах, мы озвучиваем и нормализуем проблемы, о которых люди в маркетинге могли молчать и страдать в одиночку в прошлом.
Вот некоторые из моих любимых статей по социальным вопросам, вышедших в этом году, о выгорании, домогательствах и депрессии в нашей отрасли:
- Какие-либо из этих трех вещей истощают вашу страсть к SEO?
- Давайте поговорим о домогательствах на мероприятиях: как мы можем защитить нашу аудиторию?
- #SEOChat раскрывает депрессию в поисковой индустрии
Точно так же, как мы ищем все остальное, мы будем искать ответы на личную сторону карьеры и рабочие вопросы.
По мере того, как все больше маркетологов будут рассказывать о том, как они справляются как с положительными, так и с отрицательными сторонами человеческого бытия в этой отрасли, станет менее запретным воспитывать в рабочей обстановке и делать нас всех лучшими людьми и маркетологами.
Что это значит для маркетологов?
Давайте сломаем некоторые барьеры и будем более открыты для поддержки друг друга. Наряду с деловой стороной дела подумайте о том, как вы можете поддержать других маркетологов, будь то те, с кем вы работаете, или те, кто находится в мире.
Напишите о:
- Почему важно взять отпуск.
- Как вы развиваете свой бизнес.
- Как увольнять клеветнических клиентов.
- Как нанять лучших людей.
- Когда пришло время бросить токсичную работу.
Чем честнее мы говорим о реальных проблемах и успехах в отрасли, тем больше мы можем стать ресурсами друг для друга.
Почему этот контент хорошо работает в поиске?
В то время как климат вокруг озвучивания проблем и успехов в отрасли меняется, многие люди чувствуют себя более комфортно, прежде чем спросить своих друзей.