Поскольку вопросов по общему функционалу поисковика возникло немало, вот небольшая вводная статья.
Чтобы было немного понятнее, что такое поисковая система и что она должна делать, опишу ее в общих чертах.
Специалистам-программистам, наверное, это будет не очень интересно, не обессудьте.
Но к делу: поисковая система, по моему скромному мнению, должна уметь находить наиболее релевантные результаты по поисковому запросу.
В случае с текстовым поиском, к которому мы все привыкли, поисковый запрос представляет собой набор слов, я лично ограничил его длину восемью словами.
Ответом является набор ссылок на страницы, наиболее релевантные поисковому запросу.
Ссылки желательно предоставлять с аннотацией, чтобы человек знал, чего ожидать, и мог выбрать из результатов ту, которая ему нужна – аннотация называется сниппетом.
Надо сказать, что задачу поиска невозможно решить в общих чертах – для любого документа, имеющего наибольшую релевантность, например, для слова «работа», можно создать модифицированную копию, которая будет иметь еще большую релевантность с точки зрения взгляд поисковика, но будет полной ерундой с точки зрения человека.
Конечно, это вопрос цены и времени.
Из-за обширности современного Интернета таких страниц, мягко говоря, много.
Разные системы борются с ними по-разному и с разным успехом; когда-нибудь искусственный интеллект победит нас всех.
Здесь могли бы помочь алгоритмы распознавания смысла, но я знаком только с одним из них (который реально распознает смысл, а не вычисляет статистику) и слабо представляю его применимость.
Поэтому проблемы решаются эмпирическим путем – т.е.
подбором некоторых манипуляций со страницами, чтобы отделить «зерна от плевел».
В реальном мире пока невозможно за секунду обшарить весь Интернет и найти наилучшие совпадающие результаты, поэтому поисковая система хранит локальную копию куска сети, который ей удалось собрать и обработать.
Чтобы быстро получить из миллиарда страниц только те, которые содержат нужные слова, строится «индекс» — база данных, в которой каждому слову соответствует список страниц, содержащих это слово.
Естественно, он должен хранить, в каких местах были найдены искомые слова, как они были выделены в тексте и другие числовые метрики страницы, чтобы использовать их в процессе сортировки.
Допустим, у меня 100 миллионов страниц.
Среднее слово встречается на 1-1,5% страниц, т.е.
на каждое слово приходится 1 миллион страниц (есть слова, которые появляются на каждой второй странице, а есть и более редкие).
Всего встречается, скажем, 3 миллиона слов — остальные встречаются гораздо реже и это в основном опечатки и цифры.
Для хранения 1 записи о том, что определенное слово встречается на конкретной странице, требуется id страницы - 4 байта, id сайта - 4 байта, упакованная информация о том, где и как оно было выделено - 16-32 байта, 3 коэффициента ранжирования ссылок - 12 байт. , остальные метрики по-прежнему около 12-24 байт. Я оставлю вам возможность оценить, насколько большим будет индекс: 3 миллиона*1 миллион*общий объем записи.
Для построения этого индекса существует 3 механизма: Индексирование страниц – извлечение страниц из Интернета и их первоначальная обработка.
построение ссылочных показателей, таких как PageRank, на основе первичной информации обновление существующего индекса — добавление туда новой информации и сортировка по полученным метрикам, в частности PageRank. Дополнительно необходимо сохранять тексты страниц — для построения аннотаций в процессе поиска.
Процесс поиска Можно выделить множество показателей релевантности, одни зависят от «полезности» результата для конкретного пользователя, другие от общего количества найденных результатов, третьи от показателей самих страниц — например, у некоторых поисковых систем есть определенная «полезность» результата для конкретного пользователя.
стандарт», к которому они стремятся.
Для того, чтобы машина, то есть сервер, могла сортировать найденные результаты по какой-то метрике, используя набор чисел, связанных с каждой страницей.
Например, общее количество слов, встречающихся в тексте данной страницы, их вес, рассчитываемый исходя из акцента этих слов в тексте страницы и т. д. Еще один вид таких коэффициентов не всегда зависит от запроса — например, количество страниц, ссылающихся на данную страницу.
Чем он больше, тем более весомой будет страница на выходе.
Третий тип коэффициентов зависит от самого запроса – насколько редко в нем встречаются слова, какие из них часто употребляются, и их можно пропустить.
Учитывая большое количество этих коэффициентов для каждой страницы, поиск должен выводить одно число – релевантность и сортировать по нему все результаты.
Как только индекс уже построен, вы можете осуществлять поиск по нему: разбить запрос на слова, выбрать фрагменты индекса, соответствующие каждому слову, пересечься или сделать что-то еще, в зависимости от выбранной политики подсчитайте коэффициенты для каждой страницы — их количество при желании может быть далеко за тысячу построить метрику релевантности на основе коэффициентов, отсортировать, выбрать лучшие результаты создавать аннотации - фрагменты и отображать результат Полный контент и список моих статей в поисковике будут обновляться здесь: http://habrahabr.ru/blogs/search_engines/123671/ Теги: #поисковая система #Поисковые технологии
-
Ноутбук Hp Touchsmart-Tx2-1025Dx
19 Oct, 24 -
Ли, Мариус Софус
19 Oct, 24 -
Пси 0,13
19 Oct, 24 -
Уже Более 100 Экспериментов С Chrome
19 Oct, 24 -
Решение Minteye Captcha В 23 Строки Кода
19 Oct, 24