【问题标题】:Database design, multilanguage for full text search (Postgresql)数据库设计,用于全文搜索的多语言(Postgresql)
【发布时间】: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


【解决方案1】:

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

我确信我的文章对您的问题很有用。玩得开心。
http://www.ijcaonline.org/archives/volume143/number10/irani-2016-ijca-910364.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2014-02-12
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多