TGViewer
Типичный программист Типичный программист @tproger · 78.3K subscribers
Post #14720 8.61K
Как поисковик успевает подобрать подсказки, пока вы не дописали слово

Вы набрали «face», и под строкой появились пять вариантов. На всё про всё около 50 мс, а выбрать пятёрку надо из сотни миллионов уже заданных кем-то запросов. И так на каждую букву: пока вы печатаете «*facebook», сервис отвечает восемь раз.

Хеш-таблица не подойдёт. «*facebook» в ней находится мгновенно, а «всё, что начинается на face» она искать не умеет в принципе: придётся прочитать все сто миллионов ключей.

Поэтому берут префиксное дерево. Запросы разложены по буквам, и все, кто начинается одинаково, идут общим путём от корня: дойти до «face» это ровно четыре шага. Но под этим узлом всё равно висят тысячи вариантов, поэтому пятёрку самых частых считают заранее и кладут прямо в узел. Пересчитывают пачками: отставание на пару часов никто не замечает.

Как дерево разносят по серверам и что кешируют в CDN, в разборе.

#алгоритмы

*Компания Meta и её продукты признаны экстремистскими, их деятельность запрещена на территории РФ.
  • 👍 40
  • ❤ 7
  • 👏 2
  • 🎉 2
  • ❤‍🔥 1
  • 🤷‍♂ 1
  • 🌭 1
  • 🙈 1
  • 🤝 1
  • 👾 1
More from @tproger
  1. Sep 20, 2026Как повторное использование ReverseProxy ускорило прокси на Go в 3,8 раза Автор нагрузил с…
  2. Sep 20, 2026Мы вернулись из Суздаля с новым взглядом на магазин у дома Были на tech-туре MAGNIT TECH «…
  3. Sep 19, 2026Вопрос на разогрев: что из этого появилось раньше — ICQ, MySpace или Nokia 3310? Если заду…
  4. Sep 19, 2026Почему тип указателя не гарантирует безопасность памяти Указатель сохраняет тип, даже когд…
  5. Sep 19, 2026В Суздаль за DevOps Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT T…
  6. Sep 18, 2026Как Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1 Big Pineapple за сервисом 1.1.1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →