Как лучше реализовать систему поиска?
Если только этообъект с вхождением подстроки в наименование, например
 - Postgres + GiN/GiST индекс на поле наименования gin_trgm_ops (gist_trgm_ops). Создаётся так:create index title_idx on your_table using gin(title gin_trgm_ops);
Разница gin/gist в двух словах:
По gin быстрее искать, но дольше создавать, gist наоборот.
Если что-то больше (не только по одному полю, ранжирование) - Full Text Search. Тут выбор за тобой. Sphinx, ElasticSearch, Postgres, MongoDB.
я за sphinx, но для 250 000 можно и Постгресом отделаться