SlideShare a Scribd company logo
1 of 47
Download to read offline
Разработка поисковой
машины для индексации
гипертекстовый
документов глобальной
сети Интернет
Ложковой Г.В.
Поисковая машина
• Набор программно-аппаратных компонентов с
интерфейсом, предоставляющим возможность
поиска информации.
• Веб-поисковая машина ведет поиск информации
в гипертекстовых документах, размещенных в
глобальной сети Интернет. А это более ≈1012
документов.
• Любая поисковая система состоит из трех
компонентов: поискового робота, поискового
индекса и обработчика пользовательских
запросов (интерфейс).
• Главный секрет коммерческих поисковых систем
– формула ранжирования (соответсвия
документа поисковому запросу).
Популярные поисковые
машины
Анализ существующих поисковых машин
сложен тем, что внутренняя структура всех
поисковых систем является коммерческой
тайной.
Архитектура Google
The Anatomy of a Large-Scale Hypertextual Web Search
Engine [Brin, Page, 1998]
Архитектура поисковой машины
Поисковый робот
Цель
Обойти документы, скачать
и проанализировать.
В случае обнаружения
новой ссылки при анализе
сайта, она попадает в
список веб-адресов
робота.
Требования
• Высокая скорость скачивания документов.
• Работать постоянно.
• Контроль частоты обращения к документам, чтобы
исключить возможность блокировки IP адреса
сервера поисковой машины, либо создать
дополнительную нагрузку на веб-сервер.
• Обработка исключительных ситуаций: возможность
возобновлять работу с минимальными потерями
данных, после незапланированного отключения.
Алгоритм работы
1. Получить следующий документ для обхода.
2. Закачать документ.
3. Найти все ссылки (HREF).
4. Отфильтровать список ссылок(уже
просмотренна, :javascript, :mailto…).
5. Добавить новые ссылки в очередь обхода.
6. Перейти к следующему документу.
Извлечение URL
Хоть на первый взгляд процесс извлечения URL из
документа кажется простым, но он осложнен
особенностями оформления HTML документов.
URL может быть описан как HTTP://www.Example.com/
или так http://www.example.com/a%c2%b1b
http://www.example.com/%7Eusername/
http://www.example.com:80/bar.html
http://www.example.com/../a/b/../c/./d.html
http://208.77.188.166/
http://www.example.com/foo//bar.html
/about
example.com/#about
../our-company.html
https://news.example.com/green-dresses-for-
every-day-155672.html
category/health/070223/html/category/
business/070302/html/category/community/
070413/html/FAQ.htm
/diplom/prez.pp
Нормализация URL
Процесс, при котором URL приводится к
единообразному виду, чтобы определить
эквивалентность двух синтаксически различных
URL-адресов
• Перевести в нижний регистр.
• Добавление конечного слеша /.
• Удаление сегмента точек .././page.php.
• Удаление стандартных главного индекса (index.html, default.aspx).
• Удаление #, :mailto, :javascript.
– Регулярное выражение извлечения URL
URL_PATTERN = "^(https?://)?(www)?.?
([a-z0-9-_&+-]+(?:.[a-z0-9-_&
+-]+){1,3})(?::(d+))?((?:/[a-z0-9-_
&+-.%]+)+/?)?(?:?([a-z0-9-_&
+-%.;=]+))?”;
Реализация
• Две очереди: главных страниц, внутренних
страниц.
• ≈ 1600 одновременно работающих потоков.
• HTTP/HTTPS GET запрос к серверам для
получения документа.
• Регулярное выражения для получения URL на
странице.
Очереди обхода
Доменов
содержит главные страницы
сайтов
Цель
найти как можно больше
сайтов
Страниц
содержит внутренние страницы
сайтов
Цель
получить как можно больше
информации
Выводы
Данные поискового робота:
1. Список ссылок, которые надо посетить.
2. Данные, скачанных документов (тела
документов) с мета-информацией.
3. Веб-граф.
Поисковый индекс
• Прямой просмотр всей коллекции документов –
дорогостоящая операция. Не имеет смысла, когда
корпус документов 102 и более.
• Структура данных позволяющая ускорить скорость
поиска по корпусу документов.
• Позволяет по каждому слову найти все документы и
позиции, в которых они встречаются.
• Структура
<termID, cf =
[ docID => pos1,
docID => pos2, pos3 ]>, <termID, cf..
Структура данных интуитивно знакомая каждому
Индексация
1. Получить текст документа.
2. Разделить на слова (Токенизация).
3. Удалить стоп-слова.
4. Привести к нормальной форме (Нормализация).
5. Назначить каждому слову termID.
6. Связать termID с docID.
7. Сохранить позиции вхождений в документе.
Токенизация
Обычно, поисковые системы выделяют слова в
тексте как последовательность символов [a-zа-я].
Минусы?
Токенизация
Обычно, поисковые системы выделяют слова в
тексте как последовательность символов [a-zа-я].
Минусы?
– Термины: C#, C++
– Специфические названия: 1+1
– Даты: 2015/01/10
Токенизация
Допустим, что слово – это последовательность
любых UNICODE символов между популярными
разделителями (перевод строки, пробел, точка,
запятая…)
Плюсы решения
Не требуется отдельно выделять из текста номера
телефонов, даты, термины.
Минусы решения
В индексе много последовательностей символов,
не принадлежащих к естественным языкам –
больше требуемой памяти для обработки.
Минусы решения
В индексе много последовательностей символов,
не принадлежащих к естественным языкам –
больше требуемой памяти для обработки.
Плюс? Можно искать и по ним.
Нормализация
При поиске требуется учитывать как можно больше
возможных форм слова, как идентичные.
красная = красное = красные
Например,
красивые розы = красивая роза
Решение
Обрезать окончание слова (привести к наиболее
близкому значению инфинитива)
ponies => ponie
[Одесса, одесский, одесское] => [одесс, одесск,
одесск]
(ist|an|ian|ean|ism|er|or|ee|eer|ant|ent|ar|ard|ier|ment|
ade|hood|cy|acy|age|ing|ence|ance|ion|1on|i1on|a1on|sion|
al|dom|ness|ty|ity|ancy|ency|ry|ics|ess|e3e|ese|ie|let|th|
ture|ure|lure|sure|ssure|ty|ity|sis|ed)	
  
(ий|ии|ия|ов|ей|ев|иев|ию|ам|ям|иям|ом|ем|ием|ами|
ями|иями|ии|ах|ях|ях|иях|ый|ая|ое|ые|ого|ой|ого|ых|
ому|ой|ую|ым|ыми|ом|ых|ий|яя|ее|ие|ей|его|их|ей|им|
ими|ем|их|ист|изм|ась|ись|чик|онный)	
  
(а|е|ё|и|о|у|ы|э|ю|я|ь|ъ)	
  
(а|i|у|ею|я|и|евi|овi|ом|ову|ям|iв|ях|еш|ємо|єте|є|єш|
iмо|ять|ите|имо|iте|iмо|ик|йної|ійні|ії|н|ури|||||||||)	
  
Стоп-слова
Как поступать с высокочастотными словами?
но|та|до|вы|да|из|ты|от|не
1. Присутствуют в каждом документе.
2. Не имеют смыслового веса (кроме запросов - цитат).
3. “Можно” не учитывать.
Поиск
Поиск
Поиск в интернете состоит из двух больших частей:
1. Подготовка поискового индекса (Индексация).
2. Поиск ответа на конкретный запрос в индексе.
Алгоритм поиска
1. Разбить поисковый запрос на лемы (termID)
2. Получить в индексе документы (docID),
содержащие все лемы (termID).
3. Отсортировать документы по критериям (зачем
показывать документ, где существует всего одно
вхождения слова [в том случае, если есть
варианты лучше]?).
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { 107; }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { 107; }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { 107; }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { 107; 320 }
Поиск в индексе
<7:рецепт, 5 = [ 107; 200; 320 ... ]>,
<109:пирог, 16 = [ 68; 80; 107; 190; 202; 320 ...>
7:рецепт и 109:пирог - { 107; 320 ... }
Ранжирование
Характеристики влияющие на позицию в списке?
• Наличие слов в документе.
• Частота слов.
• Наличие в заголовке.
• Расположение в документе (позиция в
тексте).
• Близость слов друг к другу (расстояние
между словами запроса в документах).
Частота слов в документе
TF (term frequency — частота слова) — отношение числа вхождения слова к
количеству всех слов документа.
Чем чаще входит слово в документ — тем оно важнее для данного документа.
IDF (inverse document frequency — обратная документная частота) — инверсия
частоты, с которой слово встречается во всех документах. То есть если данное
слово встречается практически в каждом документе, то оно общеупотребимо и
менее важно для поиска.
Выводы
• Полнофункциональная поисковая система – это
сложно… но интересно.
• Ядро поисковой машины – обратный индекс + и
алгоритмы его сжатия и построения
• От качества работы поискового робота зависит
количество доступных документов в поиске
Спасибо за
внимание!

More Related Content

What's hot

Noveo web intership html5, css, interface
Noveo web intership   html5, css, interfaceNoveo web intership   html5, css, interface
Noveo web intership html5, css, interfaceNoveo
 
Персонализация контента с помощью Yii, Sphinx и Couchbase
Персонализация контента с помощью Yii, Sphinx и CouchbaseПерсонализация контента с помощью Yii, Sphinx и Couchbase
Персонализация контента с помощью Yii, Sphinx и Couchbaseyiiconf
 
Создание сайта на PHP
Создание сайта на PHPСоздание сайта на PHP
Создание сайта на PHPVasya Petrov
 
Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9Technopark
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедевkuchinskaya
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLYandex
 
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...Yandex
 

What's hot (9)

Noveo web intership html5, css, interface
Noveo web intership   html5, css, interfaceNoveo web intership   html5, css, interface
Noveo web intership html5, css, interface
 
Персонализация контента с помощью Yii, Sphinx и Couchbase
Персонализация контента с помощью Yii, Sphinx и CouchbaseПерсонализация контента с помощью Yii, Sphinx и Couchbase
Персонализация контента с помощью Yii, Sphinx и Couchbase
 
Создание сайта на PHP
Создание сайта на PHPСоздание сайта на PHP
Создание сайта на PHP
 
Sphinx
SphinxSphinx
Sphinx
 
Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9
 
dfvbfgbghbhg
dfvbfgbghbhgdfvbfgbghbhg
dfvbfgbghbhg
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTML
 
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...
FrontTalks: Константин Лебедев (Mail.ru), File API: обработка файлов на клиен...
 

Similar to диплом

Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014
Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014
Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014it-people
 
Урок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойУрок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойЛеонид Гроховский
 
Семантика
Семантика Семантика
Семантика ptax
 
Презентация SEO - все что нужно знать про поисковую оптимизацию сайта
Презентация SEO - все что нужно знать про поисковую оптимизацию сайтаПрезентация SEO - все что нужно знать про поисковую оптимизацию сайта
Презентация SEO - все что нужно знать про поисковую оптимизацию сайтаAndrew PersonBh
 
Безопасность сайта: мифы и реальность — Петр Волков
Безопасность сайта: мифы и реальность — Петр ВолковБезопасность сайта: мифы и реальность — Петр Волков
Безопасность сайта: мифы и реальность — Петр ВолковYandex
 
скIm2 занятие 2 - seo, семантика
скIm2   занятие 2 - seo, семантикаскIm2   занятие 2 - seo, семантика
скIm2 занятие 2 - seo, семантикаIvan Pronko
 
Поисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининПоисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининMyAcademy
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...Vladislav Morgun
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
информационные системы организационного управления
информационные системы организационного управленияинформационные системы организационного управления
информационные системы организационного управленияneizkemerovo
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchVitebsk Miniq
 
Практический курс SEO для Bewebby, введение в SEO, семантика для сайта
Практический курс SEO для Bewebby, введение в SEO, семантика для сайтаПрактический курс SEO для Bewebby, введение в SEO, семантика для сайта
Практический курс SEO для Bewebby, введение в SEO, семантика для сайтаSEO-Интеллект
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf Conference
 
презентация форма
презентация формапрезентация форма
презентация формаDimaTopExpert
 
Meet up khabarovsk_ifind
Meet up khabarovsk_ifindMeet up khabarovsk_ifind
Meet up khabarovsk_ifindElena Ometova
 
Data Driven SEO на западных рынках - Виктор Карпенко
Data Driven SEO на западных рынках - Виктор КарпенкоData Driven SEO на западных рынках - Виктор Карпенко
Data Driven SEO на западных рынках - Виктор КарпенкоSeoProfy Presentations
 

Similar to диплом (20)

Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014
Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014
Извлечение информации из веб-страниц - Михаил Коробов, PyCon RU 2014
 
Урок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений КонцевойУрок 20: Протокол HTTP - Евгений Концевой
Урок 20: Протокол HTTP - Евгений Концевой
 
Семантика
Семантика Семантика
Семантика
 
Презентация SEO - все что нужно знать про поисковую оптимизацию сайта
Презентация SEO - все что нужно знать про поисковую оптимизацию сайтаПрезентация SEO - все что нужно знать про поисковую оптимизацию сайта
Презентация SEO - все что нужно знать про поисковую оптимизацию сайта
 
Безопасность сайта: мифы и реальность — Петр Волков
Безопасность сайта: мифы и реальность — Петр ВолковБезопасность сайта: мифы и реальность — Петр Волков
Безопасность сайта: мифы и реальность — Петр Волков
 
скIm2 занятие 2 - seo, семантика
скIm2   занятие 2 - seo, семантикаскIm2   занятие 2 - seo, семантика
скIm2 занятие 2 - seo, семантика
 
Seo 2016
Seo 2016Seo 2016
Seo 2016
 
Поисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил ФедорининПоисковое продвижение - Михаил Федоринин
Поисковое продвижение - Михаил Федоринин
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
информационные системы организационного управления
информационные системы организационного управленияинформационные системы организационного управления
информационные системы организационного управления
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate Search
 
Практический курс SEO для Bewebby, введение в SEO, семантика для сайта
Практический курс SEO для Bewebby, введение в SEO, семантика для сайтаПрактический курс SEO для Bewebby, введение в SEO, семантика для сайта
Практический курс SEO для Bewebby, введение в SEO, семантика для сайта
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
презентация форма
презентация формапрезентация форма
презентация форма
 
Meet up khabarovsk_ifind
Meet up khabarovsk_ifindMeet up khabarovsk_ifind
Meet up khabarovsk_ifind
 
рабочая тетрадь Html
рабочая тетрадь Htmlрабочая тетрадь Html
рабочая тетрадь Html
 
Data Driven SEO на западных рынках - Виктор Карпенко
Data Driven SEO на западных рынках - Виктор КарпенкоData Driven SEO на западных рынках - Виктор Карпенко
Data Driven SEO на западных рынках - Виктор Карпенко
 

диплом