0

我们正在尝试使用文本查询清除特定列上的重复项。

这是一个示例查询:

SELECT 
    distinct on (title) title", 
    ts_rank_cd(to_tsvector(title), query, 1) AS rank 
FROM  
    products, 
    to_tsquery('english',''english','Ribeye | Starter | Cheese | Assortment'') query 
WHERE 
    query @@ to_tsvector(title) AND 
    book_id = '37' as result 
ORDER BY 
    rank DESC limit 10 offset 0

出于某种原因,我们在使用文本搜索时仍然偶尔会收到重复的标题。

结果是:

"Ribeye Starter Cheese Assortment" 
"Filet Mignon Starter Cheese Assortment" 
"Ambassadors Assortment" 
"Ambassadors Assortment" 
"Strip Steak Starter Cheese Assortment"
"After Dinner Cheese  Assortment"
"Ambassadors Assortment"
"Chairmans Assortment"

在没有 TSVectors 的情况下使用 distinct 可以正常工作,但引入文本搜索会忽略 PostGres Distinct 关键字。

有任何想法吗 ?

4

1 回答 1

1

我面前没有要测试的 psql……但是文档中的这一行引起了我的注意:

DISTINCT ON 表达式必须匹配最左边的 ORDER BY 表达式。ORDER BY 子句通常包含附加表达式,这些表达式确定每个 DISTINCT ON 组中行的所需优先级。

所以只需将“标题”添加到ORDER

... ORDER BY title,rank DESC ...
于 2013-04-04T22:07:23.360 回答