Postgresql:加入最高 ts_rank

问题描述 投票:0回答:0

假设我有两张桌子,

apartments
geonames
。 前者有一列
location
,其中包含自由键入的数据。 后者有一个生成的列
search_vector
,通过将
to_tsvector
应用于它的一些其他列创建。

如果我运行这样的连接查询,我将从

apartments
表中获得许多列的多个匹配项。

SELECT * FROM
apartments JOIN geonames ON search_vector @@ phraseto_tsquery('english', location)

但是,我只对

location
search_vector
列之间最接近的匹配坐标感兴趣。 我知道我可以在此语句中包含一个
ts_rank
函数,然后使用一个窗口函数来获得排名最高的匹配项,但我想知道是否有更简洁、更有效的方法来做到这一点。

我的问题与this密切相关,但由于那个有点旧,我想知道Postgresql是否支持任何新的结构。

sql postgresql full-text-search
© www.soinside.com 2019 - 2024. All rights reserved.