2017-11-25 298 views
1

想象一下,我有一个带有帖子的表格,我想通过该帖子进行全文搜索。帖子可以使用不同的语言,帖子数量太大。所以,我可以添加文字列的语言,我们将有:数据库设计,用于全文搜索的多语言(Postgresql)

Posts: 
post_id bigserial PK 
post text 
post_ts tsvector 
language text 

(另外我会添加GIN指数)

当我搜索英文查询文本,我将添加“,其中语言='英文'':

从帖子中选择帖子to_tsquery('english','一些查询字符串')@@ post_ts和language ='english';

所以postgres进程将只能找到英文帖子和跳过其他的行。是否有额外时间跳过其他行?是否可以将列语言添加到主键有助于此?或者,它会得到更好的性能,使不同的表,针对不同的语言?(Posts_en,Posts_fr,Posts_it)

+0

很难说如果它值得分离到不同的表中,但是如果你的查询将有'where语言='english'和'并且语言将被索引(并且使用索引将对optimyzes有利)应该使用索引 –

回答