【问题标题】:Postgres name searchPostgres 名称搜索
【发布时间】:2017-09-09 23:25:27
【问题描述】:

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

【问题讨论】:

    标签: postgresql search indexing fuzzy-search trigram


    【解决方案1】:
    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
    

    【讨论】:

    • 为什么usernamefirst_name之间有两个空格,而first_namelast_name之间只有一个空格?
    • @Shien 只是一个错字
    • 更重要的是,当用户同时输入名字和用户名(用空格分隔)时会发生什么?
    • 你会如何索引这个表?
    猜你喜欢
    • 1970-01-01
    • 2020-06-29
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2019-03-04
    • 2017-06-11
    相关资源
    最近更新 更多