Рекомендую сделать это руками без применения олдскульных инструментов (Эластик, Монго, Постгр, Касандру). Определитесь с тем, какие у вас данные, затем - как их связать.
Обычно, одна нода ("узел") - это один слог (любого слова).
Дальше - стройте граф, проходя по тексту: занося слоги и ставя связи (слева-справа: id-шники соседних "узлов"), и отдельно - локации: id-узла, id-локации (линк, файл, документ, URL и т.п.).
Поиск - путь по нодам даст сразу все локации. (это мнгновенно, т.к. всё по ID происходит)
Требования к системе в порядке приоритета.
1 Возможность запустить это всё на как можно более дешёвом и досутпном железе - это критично т.к. бюджет на инфраструктуту ограничен
2 Скорость поиска
3 Надёжность и отказоустойчивость
4 Лёгкость масштабирования
Все требования исполняются на 100%.