Обложка канала

habr.com

37749 @habr_com

Официальный канал Хабра

habr.com

3 года назад
Открыть в
Всем привет! Меня зовут Михаил, и я актуализирую базы клиентов beeline cloud. Сложность тут в том, что наша компания использует множество различных систем как собственной, так и сторонней разработки. А у каждого сервиса своя база данных. Когда появилась необходимость собрать всё это воедино, началось самое интересное. Оказалось, в разных местах один и тот же клиент может называться по-разному: где-то с опечатками, где-то заглавными буквами, а где-то может быть псевдоним вместо официального названия из ЕГРЮЛ. Чтобы привести всё к единому виду, мы решили собрать всех клиентов вместе и организовать полнотекстовый поиск по «эталонной» базе. Так любой сервис может узнать актуальные данные по клиенту даже с неточным запросом. Теме поиска посвящено множество статей и даже отдельный хаб. Но мы хотели реализовать поиск здесь и сейчас, поэтому вместо Elasticsearch или Sphinx организовали полнотекстовый поиск средствами PostgreSQL через SQLAlchemy, о чём я подробно рассказал в своей статье. Если хотите полноценно погрузиться в тему, посмотрите ниже — собрал полезное с Хабра из моего «Избранного». — Как мы внедряли полнотекстовый поиск Автор делится опытом реализации поиска. Сравнивает разные технологии и даёт общее представление о проблематике. В комментариях — активный дискус, что лучше: сторонний сервис или поиск напрямую в базе. PostgreSQL Antipatterns: сказ об итеративной доработке поиска по названию, или «Оптимизация туда и обратно» Хороший разбор того, как работает нечёткий поиск в Postgres и почему это может быть удобнее, чем сторонний поисковик. Ищем имена с опечатками в PostgreSQL И ещё один пример. Готовим полнотекстовый поиск в Postgres. Часть 1 и часть 2 Подробная статья о том, как писать запросы и строить индексы на чистом SQL. Много внимания уделено оптимизации и выборе нужного индекса. Материал оказался очень полезным для реализации FTS в нашем проекте. Индексы в PostgreSQL — 7 Очень глубокий анализ работы индексов в PostgreSQL. Будет полезно для общего развития. В этой части разбирается работа индекса GIN, который используется также для индексирования pg_trgm. Если интересуетесь темой, как и я, подписывайтесь на наш блог. Ещё будем рассказывать об IaaS, Private Platform, VDI, DRaaS, BaaS, S3-хранилище, colocation, DBaaS, Kubernetes, Cloud NGFW, SSL VPN, Secure Email Gateway, MFA, WAF, защите от DDoS, Cloud 152 и многом другом.