Поисковый движок в Ozon — сложная распределённая система, построенная на основе Apache Lucene. Наше решение позволяет эффективно обрабатывать более десятка тысяч разреженных полей в поисковом индексе, осуществляя поиск по миллионам документов при тысячах RPS.
Обычно атрибуты документов обновляются редко (название, описание, категории товара), вследствие чего моментальность доставки таких обновлений до поискового движка не является обязательной. Однако есть и такие свойства (количество на складах, цена), обновления в которых происходят довольно часто и для которых важно как можно быстрее отражать эти изменения при обработке новых запросов. Для реализации этой возможности мы разработали своё собственное «быстрое хранилище».
В этом докладе будет рассказано о том, что потребовалось от системы, поддерживающей быстро обновляемые поля; с какими сложностями мы столкнулись на пути разработки решения, одновременно эффективного, отказоустойчивого и совместимого с Lucene; к какой архитектуре пришли; а также какие планы у нас есть по развитию этой технологии.