我目前正在我的应用程序上实现搜索功能。我有一个包含用户名和全名字段的用户表。我想搜索具有最佳相似性的用户(来自用户名或全名)。我在 stackoverflow 上进行了很多搜索,发现了一个非常高效的实现: https ://stackoverflow.com/a/44856792/5979369
我使用了这段代码并创建了这个搜索查询:
SELECT username, email, full_name
, similarity(username , 'mar') AS s_username
, similarity(full_name , 'mar') AS s_full_name
, row_number() OVER () AS rank -- greatest similarity first
FROM user
WHERE (username || ' ' || full_name) % 'mar' -- !!
ORDER BY (username || ' ' || full_name) <-> 'mar' -- !!
LIMIT 20;
我有一个用户名是mariazirita的用户,但是当我使用这个查询搜索mar时它不会返回任何内容。如果我搜索maria,它已经返回了用户。
当我搜索mar或ma时,我可以做些什么来改进此查询以返回用户?
谢谢