2017-04-13 126 views
-1

我有一个很小的数据集(〜1000行)。每一行都有一个用户名,名字和姓氏。我可以使用pg_trgm对这三个字段进行模糊搜索,并将这三个字段连接在一起,每个字段之间有两个空格?或者,是否有更好的方法来搜索这组用户,使用卦或任何其他方法?Postgres名称搜索

回答

0
select format('%s %s %s', username, first_name, last_name) 
from t 
order by greatest (
    similarity(_name, username), 
    similarity(_name, first_name), 
    similarity(_name, last_name) 
) desc 
limit 10 

select s 
from t, format('%s %s %s', username, first_name, last_name) s(s) 
order by word_similarity(_name, s) desc 
limit 10 
+0

为什么有username'和'first_name'之间'两个空格,但first_name'和'last_name'之间'只有一个? – Shien

+0

@Shien只是一个错字 –

+0

更重要的是,当用户键入名字和用户名(用空格隔开)时会发生什么? – Shien