杰夫在http://blog.stackoverflow.com/2011/03/redesigned-users-page/中提到
- 搜索“再次匹配”,但最小匹配现在是3个字符。
优秀的东西!由于LIKE匹配的性能以及全文搜索不精确(例如,用户名中的首字母太短而无法在任何全文索引中显示),这已经“破坏”了一段时间。
必须有一种方法可以解决这个问题,我有一个想法,但我想知道是否有人已经有了解决方案(替代方案)来应对这一挑战。
示例查询:
SELECT TOP 36 *
FROM users
WHERE nickname LIKE '%' + @search + '%'
注意:即使标签是sql-server,因为最多有5个标签,我非常乐意调查其他RDBMS中的解决方案以实现可移植性。
答案 0 :(得分:4)
Postgres至少最近在其标准模块中添加了a trigram-matching solution。它将LIKE查询重写为多个三元组匹配查询。不幸的是,索引大小往往很大。
还有Wildspeed,它也有巨大的指数。我猜这个尺寸很大程度上取决于色谱柱的长度。