5
我使用卦像這樣在Postgres的全文搜索:如何在Postgres中執行簡單的地圖縮小?
SELECT *
FROM "Users" users
WHERE 'search_text' % ANY(regexp_split_to_array(users.name,E'\\s+'))
查詢以上檢查如果search_text
任何字(斯普利特whitespace
)在User.displayName
匹配。這可行,但結果不是由實際的「分數」排序。
得分可以通過similarity(text,text)
函數來計算。
問題是我必須按他們的順序排列所有在User.name
中找到的每個單詞的相似度。因此,如果用戶名是"A B C"
那麼它的分數應該是:
similarity('search_text','A') + similarity('search_text','B') + similarity('search_text','C')
所以我需要映射用戶名的話分數,然後相加(減少)他們。我如何在postgres中做到這一點?