假设我有两张桌子,
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是否支持任何新的结构。