Поисковая система: как это работает?
Первой компьютерной программой для поиска в Интернете стала Арчи, созданная в 1990 году студентами из Монреаля. Она скачивала списки всех файлов со всех доступных FTP-серверов и строила базу данных, в которой можно было выполнять поиск по именам файлов. Первой полнотекстовой поисковой системой стала «WebCrawler», запущенная в 1994 году и индексирующая ресурсы при помощи робота. Она позволяла пользователям искать по любым словам, расположенным на любой веб-странице.
В 1998 году Ларри Пейдж и Сергей Брин создали поисковую систему Google на основе своего проекта BackRub. Их новаторством стало внедрение собственного алгоритма PageRank, ранжирующего веб-страницы на основании количества гиперссылок на них. Поиск с учётом русской морфологии был впервые реализован в 96 году на поисковой машине Altavista, тогда же были запущены Рамблер и Апорт. А в сентябре 97 года была открыта поисковая машина Яндекс.
Первоначально поисковому роботу необходимо получить контент, а индексатору сгенерировать доступный для поиска индекс. Поисковый робот, или «краулер», — это программа, которая автоматически проходит по всем ссылкам, найденным на странице, и выделяет их. Исходя из заранее заданного списка адресов, она осуществляет поиск новых документов, ещё не известных поисковой системе. Найденные новые страницы анализируются поисковой системой для дальнейшего индексирования. Этим занимается специальный модуль — индексатор, который предварительно разбивает страницы на части, применяя лексические и морфологические алгоритмы. Данные о веб-страницах хранятся в индексной базе. Индекс позволяет быстро находить информацию по запросам пользователей.
Поисковик, в свою очередь, работает с файлами, полученными от индексатора. Когда пользователь вводит запрос в поисковую систему, она проверяет свой индекс и выдаёт список наиболее подходящих веб-страниц.
Анализ запроса начинается с определения языка, так как одно и то же слово на разных языках может обозначать разные вещи. Поэтому система обращает внимание на алфавит, регион и язык интерфейса пользователя. Затем поисковик переходит к морфологии и определяет, к какой части речи относятся написанные слова. Это позволяет находить документы, содержащие разные формы одних и тех же слов. Также поисковая система выделяет в запросе различные объекты — географические названия, имена людей и названия организаций, а чтобы учесть все возможные варианты, дополняет запрос новыми формулировками с тем же смыслом. Кроме того, поисковик автоматически исправляет ошибки или показывает результаты как по ошибочному, так и по исправленному запросам.
Большинство поисковых систем использует методы ранжирования и машинное обучение, чтобы выводить в начало списка «лучшие» результаты.
В продвинутых поисковых системах нейронные сети преобразуют поисковые запросы и заголовки веб-страниц в группы чисел — семантические векторы. Их можно сравнивать друг с другом и выдавать еще более точные результаты.
Существуют и поисковые алгоритмы, которые сравнивают векторы запросов и веб-страниц целиком — а не только их заголовков. Это позволяет системе понимать смысл страниц и верно отбирать их, когда люди описывают искомое своими словами. Для этого нейросеть преобразует тексты страниц в семантические векторы заранее — на этапе индексирования. А когда человек задаёт запрос, алгоритм сравнивает вектор запроса с уже известными ему векторами страниц.