ݺߣ

ݺߣShare a Scribd company logo
Разработка поисковой
машины для индексации
гипертекстовый
документов глобальной
сети Интернет
Ложковой Г.В.
Поисковая машина
• Набор программно-аппаратных компонентов с
интерфейсом, предоставляющим возможность
поиска информации.
• Веб-поисковая машина ведет поиск информации
в гипертекстовых документах, размещенных в
глобальной сети Интернет. А это более ≈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

диплом