Postgresql全文(pg_trgm)更好地处理完全匹配?

时间:2013-01-30 05:24:43

标签: postgresql full-text-search

所以我有一个简单的场景。我有一个场地桌(活动场地等)。我的查询如下:

SELECT * FROM venues WHERE venues.name % 'Philips Arena' ORDER BY similarity(venues.name, 'Philips Arena') DESC

这在技术上有效,我将飞利浦竞技场作为第一个结果,但我也得到了大量其他不应该被建议的结果。喜欢'TGE竞技场'和'LG竞技场'。我宁愿他们被排除在外。此外,如果我只搜索'竞技场',我仍然会喜欢建议。但是如果结果中有一个明显的异常值,就像上面例子中的飞利浦竞技场那样,我只想回复它。

我有什么想法可以做到这一点?我希望pg_trgm有这样的设置。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

也许它会帮助你。带有“A”的单词比其他单词更重要。

SELECT title, ts_rank_cd(fts,q)
FROM titles, to_tsquery('something:B|somebody:B|important:A') q
WHERE fts @@ q ORDER BY ts_rank_cd DESC, Length(title) LIMIT 10;
相关问题