Как реализовать Full text search для Postgresql на SQLAlchemy?

Всем привет.

Есть Flask приложение. Использую Flask-SQLAlchemy. База Postgres. Есть уже достаточно много моделей подобного вида:
class Some(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    text = db.Column(db.String, nullable=False)


Задача для некоторых моделей поднять Full text search. Насколько я знаю, в Postgres есть FTS из коробки. Все что нашел я это SQLAlchemy-Searchable. Отличная вещь, но требует использовать декларативные модели. Попробовал прикрутить, но, видимо, что то делал не так, т.к. после начала использования декларативных моделей, alembic предлагал сначала все таблицы грохнуть, а потом создать заново, что не подходит мне.

Подскажите, как реализовать FTS с минимальными затратами? с имеющимся окружением и ограничениями?

Может быть имеет смысл переехать на вообще какой-нибудь ElasticSearch? Создать индекс, для тех данных, которые мне нужны, да параллельно работать с ним при добавлении\изменении\удалении?
  • Вопрос задан
  • 2098 просмотров
Решения вопроса 2
gunlinux
@gunlinux
Freelancer
habrahabr.ru/post/234613 Whoosh

Давным давно использовал sphinx search, кеш обновлял хелперами в классах, мы же говорим об ORM, сейчас бы сделал декоратор. @update_cache или что-то вроде.
Ответ написан
skipirich
@skipirich
проходил мимо
Почитайте вот здесь The Flask Mega-Tutorial, Part X: Full Text Search я когда с помощью этого поста полнотекстовый поиск в одном проекте организовал. Если база уже наполнена то вот здесь Rebuild Search показано как переиндексировать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы