【发布时间】:2018-05-09 10:22:38
【问题描述】:
假设我有一个包含帖子的表格,我想通过这些帖子进行全文搜索。而且帖子可以使用不同的语言,帖子数量太大。所以我可以添加文本列语言,我们将拥有:
Posts:
post_id bigserial PK
post text
post_ts tsvector
language text
(另外我会添加 GIN 索引)
当我搜索英文查询文本时,我会添加“where language = 'english'”:
从 to_tsquery('english', 'some query string') @@ post_ts and language = 'english';
的帖子中选择帖子因此 postgres 进程将仅找到包含英文帖子的行并跳过其他行。是否会有额外的时间跳过其他行?将列语言添加到主键可以对此有所帮助吗?还是为不同的语言制作不同的表会更好?(Posts_en,Posts_fr,Posts_it)
【问题讨论】:
-
很难说是否值得分离到不同的表,但如果你的查询将有
where language = 'english' and并且语言将被索引(并且使用索引将有利于优化) - 是的索引应该是二手
标签: postgresql database-design full-text-search