数据库设计,用于全文搜索的多语言(Postgresql)

数据库设计,用于全文搜索的多语言(Postgresql),postgresql,database-design,full-text-search,Postgresql,Database Design,Full Text Search,假设我有一个包含帖子的表格,我想对这些帖子进行全文搜索。而且帖子可以使用不同的语言,而且帖子数量太多。因此,我可以添加文本列语言,我们将: Posts: post_id bigserial PK post text post_ts tsvector language text (此外,我将添加GIN索引) 当我搜索英语查询文本时,我会添加“where language='English'”: 从要查询的帖子中选择帖子('english','some query string')@@post和l

假设我有一个包含帖子的表格,我想对这些帖子进行全文搜索。而且帖子可以使用不同的语言,而且帖子数量太多。因此,我可以添加文本列语言,我们将:

Posts:
post_id bigserial PK
post text
post_ts tsvector
language text
(此外,我将添加GIN索引)

当我搜索英语查询文本时,我会添加“where language='English'”:

从要查询的帖子中选择帖子('english','some query string')@@post和language='english'


所以postgres进程将只找到包含英文帖子的行,并跳过其他行。是否有额外的时间跳过其他行?将列语言添加到主键是否有助于此?或者,为不同的语言制作不同的表会提高性能?(Posts\u en、Posts\u fr、Posts\u it)去年,我写了一篇关于多语言数据建模模式的文章,介绍了所有现有的数据模型,以支持信息系统中的多语言,并评估了它们在不同环境下的优缺点

我相信我的文章对你的问题很有用。玩得开心。

去年,我写了一篇关于多语言数据建模模式的文章,介绍了所有现有的数据模型,以支持信息系统中的多语言,并评估了它们在不同环境下的优缺点

我相信我的文章对你的问题很有用。玩得开心。

很难说是否值得分离到不同的表,但是如果您的查询将具有
其中language='english'和
并且语言将被索引(并且使用索引将有利于优化)-应该使用索引来说明是否值得分离到不同的表,但是,如果您的查询将具有
,其中language='english'和
,并且语言将被索引(并且使用索引将有利于优化),那么应该使用yes索引