【发布时间】:2020-10-02 14:09:10
【问题描述】:
我的数据库中有一份化学品清单,我为我们的用户提供了通过我们的网站进行实时搜索的能力。我使用 SQLAlchemy,我使用的查询看起来像这样:
Compound.query.filter(Compound.name.ilike(f'%{name}%')).limit(50).all()
例如,当有人搜索 甲苯 时,他们并没有得到他们正在寻找的结果,因为有许多化学品中含有甲苯这个词,例如:
- 2、4二硝基甲苯
- 2-氯乙基对甲苯磺酸盐
- 4-溴甲苯
- 6-氨基间甲苯磺酸
- a,2,4-三氯甲苯
- a,o-二氯甲苯
- a-溴甲苯
- 等等……
我意识到我可以增加我的limit,但我觉得 50 已经绰绰有余了。或者,我可以将ilike(f'%{name}%')) 更改为ilike(f'{name}%')),但我们的业务需求不希望这样。我宁愿做的是提高 Postgres 返回结果的能力,使 甲苯 位于搜索结果的顶部。
对 Postgres 的 ilike 功能有何想法?
提前致谢。
【问题讨论】:
标签: postgresql sqlalchemy