Поисковые системы
Первой компьютерной программой для поиска в Интернете стала Archie, созданная в 1990 году студентами из Монреаля. Она скачивала списки всех файлов со всех доступных ftp-серверов и строила базу данных, в которой можно было выполнять поиск по именам файлов.
Первой полнотекстовой поисковой системой стала WebCrawler, запущенная в 1994 году и индексирующая ресурсы при помощи поискового робота. Она позволяла пользователям проводить поиск по любым словам, расположенных на любой веб-страницы.
В 1998 году Ларри Пейдж и Сергей Брин создали поисковую систему Google на основе своего проекта Backrub. Их новаторством стало внедрение собственного алгоритма поиска, ранжирующего веб-страницы на основании гиперссылок на них.
Поиск с учётом русской морфологии был впервые реализован в 1996 году на поисковой машине AltaVista, тогда же были запущены Rambler и Aport, а в сентябре того же года была открыта поисковая машина Yandex.
Как работают поисковые системы
Первоначально поисковому роботу необходимо получить контент, а индексатору сгенерировать доступный для поиска индекс. Поисковый робот, или веб-краулер, это программа, которая автоматически проходит по всем ссылкам, найденным на страницах и выделяет их.
Исходя из заранее заданного списка адресов, он осуществляет поиск новых документов ещё неизвестных поисковой системе. Найденные новые страницы анализируются поисковой системой для дальнейшего индексирования. Этим занимается специальный модуль — индексатор, который предварительно разбивает страницы на части, применяя лексические и морфологические алгоритмы.
Данные веб-страницы хранятся в индексной базе. Индекс позволяет быстро находить информацию по запросам пользователей. Поисковые системы, в свою очередь, работают с файлами, полученными от индексатора.
Когда пользователь вводит запрос в поисковые системы, они проверяют свой индекс и выдают список наиболее подходящих веб-страниц. Анализ запроса начинается с определения языка, так как одно и то же слово на разных языках может обозначать разные вещи. Поэтому система обращает внимание на алфавит, регион и язык интерфейса пользователя.
Затем поисковые системы переходят к морфологии, определяя к какой части речи относятся написанные слова. Это позволяет находить html-страницы, содержащие разные формы одних и тех же слов. Также поисковые системы выделяют в запросе различные объекты: географические названия, имена людей и названия организаций. Кроме того, поисковик исправляет ошибки или показывает результаты как по ошибочным, так и по исправленным запросам.
Большинство поисковых систем используют методы ранжирования и машинное обучение, чтобы выводить в начале списка лучшие результаты. В продвинутых поисковых системах нейронные сети преобразуют поисковые запросы и заголовки веб-страниц в группу чисел — семантические векторы. Их можно сравнивать друг с другом и выдавать ещё более точные результаты.
Существуют поисковые алгоритмы, которые сравнивают векторы запросов и веб-страницы целиком, а не только их заголовки. Это позволяет системе понимать смысл страниц и верно отбирать их, когда люди описывают искомое «своими словами». Для этого нейронная сеть преобразует тексты страниц в семантические векторы заранее на этапе индексирования, а когда человек задаёт запрос, алгоритм сравнивает вектор запроса с уже известными ему векторами страниц.