replace CASE construct with plpgsql function

This commit is contained in:
Sarah Hoffmann
2023-06-28 14:27:35 +02:00
parent 42631b85c7
commit 5135041405
3 changed files with 29 additions and 5 deletions

View File

@@ -129,10 +129,11 @@ class FieldRanking:
"""
assert self.rankings
col = table.c[self.column]
return sa.case(*((col.contains(r.tokens),r.penalty) for r in self.rankings),
else_=self.default)
return sa.func.weigh_search(table.c[self.column],
[f"{{{','.join((str(s) for s in r.tokens))}}}"
for r in self.rankings],
[r.penalty for r in self.rankings],
self.default)
@dataclasses.dataclass