Триграмма дистанционных операций в sqlalchemy - PullRequest
0 голосов
/ 24 октября 2018

В настоящее время я пытаюсь использовать операции pg_trgm % и <->.Индексы GIN для столбцов уже доступны, но я не могу найти sqlalchemy, эквивалентный ранее упомянутым операторам.

Каков наилучший подход для решения этой проблемы, кроме написания чисто текстового запроса.

Простой пример запроса:

tag = test
tag_subq = session.query(sticker_tag.file_id, f'sticker_tag.name <-> {tag}'.label(distance)) \
    .filter(f'sticker_tag.name % {tag}')) \
    .filter('distance' < 0.3) \
    .subquery("tag_subq")

Вышеупомянутый запрос, очевидно, не работает, а строка select и filter являются просто заполнителями для визуализации того, что я собираюсь сделать.

1 Ответ

0 голосов
/ 24 октября 2018

вы можете использовать метод Operators.op () ;это генерирует любой оператор, который вам нужен:

sticker_tag.name.op('<->')(tag)
sticker_tag.name.op('%')(tag)
...