248

Когда я ищу файл на моем HD в Windows 7 или Windows XP, процесс занимает несколько минут. Если я введу поисковый запрос в Google, ответ появится на моем экране в миллисекундах

Как Google может осуществлять поиск в Интернете, который во много раз больше моего жесткого диска, быстрее, чем моя ОС может выполнять поиск на моем компьютере? Это только вопрос вычислительной мощности и правильного алгоритма?

10 ответов10

211

Google не ищет в Интернете: он ищет в индексе. У Google есть огромные серверные фермы, которые постоянно сканируют и индексируют Интернет. Этот процесс занимает много времени, так же как поиск вашего неиндексированного жесткого диска. В Windows 7 есть возможность индексировать ваши жесткие диски. Поначалу этот процесс занимает некоторое время, но после его запуска результаты поиска будут мгновенными.

Если вы хотите узнать больше о том, как работает поиск Google, вы можете прочитать статью Google « Как работает поиск » или статью « Как работает материал: как работает Google ».

71

Google подобен поиску на желтых страницах адреса (проиндексирован). Поиск в Windows похож на проверку чисел на зданиях (не индексируется).

Другой аналогией будет просмотр хорошо организованной библиотеки и карточного каталога или просто сортировка неорганизованной стопки книг каждый раз.

По сути, это вся организационная работа, проделанная до поиска, которая делает его быстрым.

К вашему сведению: при поиске в индексированных местах поиск Windows может быть таким же отзывчивым.

36

Google занимается поиском (и обслуживанием рекламы), и он очень сосредоточен на этом. Google делает несколько вещей, чтобы обеспечить быстрый возврат данных:

  • Сначала он использует MapReduce и PageRank для создания всеобъемлющего индекса Всемирной паутины. Он регулярно обновляет это, чтобы результаты были свежими.
  • Этот индекс распространяется и реплицируется на многих серверах Google
  • Ваш запрос распределен по нескольким серверам для получения возвращаемых результатов. Это позволяет процессу быть очень распараллеленным.
  • Общие запросы и результаты кэшируются, что снижает необходимость выполнения поиска вообще.

Смотрите эту ссылку для получения дополнительной информации о том, как работает поиск

Для сравнения, поиск по жесткому диску без индекса должен прочитать все файлы на диске, и это может занять много времени.

Кроме того, вы можете рассматривать как файловую систему, так и индекс как дерево. В файловой системе корнем дерева является папка верхнего уровня, и в этой папке могут быть ветви (папки) или листья (файлы). Каждая ветвь может иметь подветви для большего количества папок и оставляет для большего количества файлов. Для поиска этой структуры вам нужно «пройтись» по всем ветвям (и подветвям), чтобы найти искомый лист. Индекс переворачивает эту иерархию. Основа становится алфавитом, и все его ответвления дополнительно уточняются. Листья - это местоположение предмета, который вы ищете. Поиск в этой структуре позволяет вам обрезать (исключить) большие участки дерева (например, первая буква вашего поискового запроса позволяет сразу обрезать 25 других ветвей).

30

Около 4 лет назад я тоже задавал себе тот же вопрос. Но пока я гуглил, проводя свои исследования, я в конце концов прочитал об этом, кроме того факта, что они нанимают лучших из лучших, чтобы придумать некоторые из самых сложных алгоритмов поиска и все такое.

Я думаю, что один из ключевых дизайнов, который они использовали, похож на идею уменьшения карты. У вас много дешевых компьютеров на фермах. Пусть на этих компьютерах будет всего около 80 гигабайт дискового пространства и настойчиво потребуется около 16 гигабайт оперативной памяти или даже лучше 32 гигабайт оперативной памяти на этих компьютерах (насколько это возможно). Помните, что они связаны через какую-то сложную систему, которую они разработали. Но ключевая идея здесь заключается в том, что при отправке запроса он передается в их систему, где он пытается найти свежие данные в оперативной памяти. Имейте в виду, у них много этих дешевых компьютеров. А поскольку данные находятся в оперативной памяти, они обнаруживаются намного быстрее, чем на жестком диске. Но не забывайте, что у них есть сложная система (индексация и все эти алгоритмы), которая очень помогает.

И эти данные не должны быть свежими, потому что мы все знаем, что Google хранит все. Что касается того, что должно быть в ОЗУ, можно использовать тот же принцип, что и для деревьев сплайнов: сохраняйте то, что люди ищут больше всего в ОЗУ, и записывайте наименее искомый материал на жесткий диск.

Эта небольшая идея в сочетании с их индексацией и всеми другими вещами, упомянутыми другими в их ответах, может быть одной из причин, почему это быстрее, чем поиск по жесткому диску.

  • Возможность прогнозировать на основе других поисков.
  • Данные, скорее всего, находятся в оперативной памяти, которая, как мы все знаем, быстрее.
  • Используйте несколько систем, чтобы разделить и победить
  • Поиск является их основным приоритетом.

Конечно, я могу ошибаться, но для меня это имело смысл. И я был счастлив с тем, что я узнал.

20

Google использует чрезвычайно сложную систему индексации, параллельные операции и ряд методов балансировки нагрузки, недоступных для стандартного автономного компьютера. на самом деле очень мало общего между поиском по сети и поиском по жесткому диску, и Google сильно оптимизирует их для конкретных случаев использования.

4

В 2004 году некоторые сотрудники Google опубликовали статью MapReduce, и с тех пор они улучшались в сотни раз.

Кроме того, они используют Google File System(GFS), которая является распределенной файловой системой, такой как Hadoop Distribud File System(HDFS), и чрезвычайно оптимизирована для своих целей. Также, насколько я знаю, GFS работает, может быть, в тысячи раз быстрее, чем HDFS.

2

Я думал, что добавлю к этому, поскольку у меня тоже был этот вопрос некоторое время назад, и я нашел эти отличные видео, которые описывают, что Google делает на поверхности. Интересно посмотреть.

Google на Youtube 1
Google на Youtube 2

Он идет немного глубже, но не настолько глубоко, чтобы вы терялись в технических деталях.

Приветствия.

1

Просто добавив что-то к замечательным ответам здесь. Google использует кеширование популярных поисковых фраз. Результаты этих поисков хранятся в памяти. Таким образом, если вы ищете что-то, что искали много, результаты появятся почти сразу.

0

Чтобы ответить на вопрос упрощенно: представьте, что у вас есть учебник с указателем ключевых слов в конце.

Поиск на жестком диске (по крайней мере наивно) - это все равно, что пролистывать книгу, страницу за страницей, сканируя каждую строку на предмет совпадения вашего ключевого слова.

Использование поисковой системы в Интернете похоже на поиск ключевого слова в индексе, а затем переход непосредственно к номеру страницы, который он дает.

В действительности, конечно, это намного сложнее, чем это. Например, вы обычно будете искать на своем жестком диске информацию, отличную от Интернета. Но самое главное, что поисковая система использует индекс. Он уже прошел слово "книга" слово за словом и составил список этих слов вместе с тем, где их найти, и упорядочил этот список таким образом, что он может очень быстро находить в нем информацию. ,

Например, подумайте об организации указателя в книге. Во-первых, он обычно сортируется по алфавиту, а во-вторых, он может иметь буквенные заголовки. Когда вы ищите слово в индексе, вы сразу видите список слов, начинающихся с буквы, которую вы хотите. А поскольку список отсортирован, легко найти нужное слово в списке или быстро определить, отсутствует ли оно.

Подводя итог, можно сказать, что на вашем жестком диске есть книга, а поисковая система имеет индекс. Хотя, как отмечали некоторые другие, для индексирования вашего жесткого диска можно использовать программное обеспечение, а затем вы можете использовать индекс вместо всего этого.

-1

Я предполагаю, что одной из причин, по которой Google появился Auto Complete и использовал AJAX была проблема со скоростью. Теперь, когда вы печатаете, слова отправляются в фоновом режиме, поэтому Google может выполнять часть работы, пока вы еще не закончили. Также индексы основаны на нескольких словосочетаниях (которые вы можете найти в качестве подсказок внизу страницы). В настоящее время скорость сети выше, чем у жестких дисков, и, вероятно, многие из этих индексов находятся в оперативной памяти серверов их фермы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .