PostgreSQL:最快的自动完成索引

问题描述 投票:0回答:2

我有一个包含一列和 1 亿行文本的表。 文字是简单的1-5个单词的句子。

我的目标是拥有一个可以与自动完成功能一起使用的超快速查询。所以用户输入后我会尽快得到结果。

我尝试了许多不同的索引和

tsvector
功能。

  1. 满足我的需求的好的解决方案/组合是什么?
  2. 我可以使用哪些其他解决方案来实现我的目标并相对快速地设置?
postgresql full-text-search
2个回答
14
投票

如果你想匹配带有前缀的完整文本,SQL查询将是

SELECT words FROM phrases WHERE words LIKE 'user input%';

带有

text_pattern_ops
运算符类的常规 B 树索引应该可以解决问题。

如果短语太长而无法建立索引或者您想节省空间,则仅索引和查询前缀:

CREATE INDEX ON phrases (substr(words, 1, 50) text_pattern_ops);

然后用

查询
SELECT words FROM phrases WHERE substr(words, 1, 50) LIKE 'user input%';

0
投票

LIKE 运算符慢得可怜。尝试按照此博客

中所述使用 BETWEEN
© www.soinside.com 2019 - 2024. All rights reserved.