Как реализовать 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? Создать индекс, для тех данных, которые мне нужны, да параллельно работать с ним при добавлении\изменении\удалении?
  • Вопрос задан
  • 2097 просмотров
Решения вопроса 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 показано как переиндексировать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы