Что выбрать для полнотекстового поиска по большому объёму данных?
Доброго дня
Стоит такая амбициозная (для меня по крайней мере) задача
Есть ~50M PDF документов, средний размер каждого ~1MB, минимальный 10KB, максимальный 50MB.
Суммарный объём выходит под 50TB.
95% данных в документе это текст.
Нужно обеспечить полнотекстовый поиск по всему объёму данных, тоесть есть фраза - надо показать документы где она встречается и (опционально) показать снипеты, тоесть текстовое окружение где в документе нашлась фраза.
Добавление даных в базу происходит редко и оно некритично, тоесть его можно выполнять долго и с низким приоритетом. Удаление/изменение данных не случается вообще.
Требования к системе в порядке приоритета.
1 Возможность запустить это всё на как можно более дешёвом и доступном железе - это критично т.к. бюджет на инфраструктуру ограничен
2 Скорость поиска
3 Надёжность и отказоустойчивость
4 Лёгкость масштабирования
Самостоятельно почитал про Эластик, Монго, Постгр, Касандру и от этого ещё больше запутался.
Если у кого-то есть опыт в схожих задачах поделитесь идеей при помощи каких технологий это можно было бы реализовать.
Спасибо заранее всем откликнувшимся
Ну Аксёнов каждый год выступает на HighLoad'е с докладами по Sphinx'у, митапы вон какие-то проводят (судя по официальному сайту). С толковыми мануалами на русском - да, есть такая проблема. Но документация (пусть и на английском) - в наличии, релизы с фиксами и улучшениями (после выхода третьей версии) выходят стабильно.
Да и в полнотекстовом поиске уже давно всё изобретено - выдумывать что-то новое здесь сложно)
А sphinx вполне себе шустрый движок, старается выдавать максимальную производительность, по потребляемым ресурсам - эластику точно фору даёт.
Вот за горизонтальное масштабирование судить не берусь, может быть эластик в этом плане будет выигрышнее.
ну, Аксенов - надо признать честно - перешел в Авито на фуллтайм
но
Сфинкс подхватили manticoresearch , с бОльшим числом мануалов, но, увы, тоже для тех кто в теме
хотя(!) их штука работает из коробки, на надо конфиг писать, индексер запускать и все такое
а не упомянули, потому что у "никто" массивы данных по 50к )), там не то что Эластик на VPS справится, там Эксель справится
проекты, где айтемы считаются миллионами и владельцы считают деньги, которые жрет железо, не для всех, тем более, что логи вполне пихают в Кликхаус
плюс, конечно, у Эластика много создано для удобства програмера
где Сфинкс, там и Reindexer, при прочих равных - сопоставимо по затратам на поддержку, Го-прогеров потихоньку становится больше
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.