1

我试图为句子(大多数是单个单词)添加一个字典,但我不确定是否应该按单词组织它们,例如:

{word:"bacon", en:"bacon", ro:"sunca", fr:"jambon"}

或按语言:

{
    en:{ bacon:bacon },
    ro:{ bacon:sunca },
    fr:{ bacon:jambon }
}

我意识到两者都有优点和缺点,同样有效,但我正在寻求那些以前遇到过这个问题,做出选择,并且高兴或后悔做出它的人的智慧,当然,为什么。

谢谢你。

4

2 回答 2

2

下面的表示简单而优雅。但是 mongodb(或大多数 nosql 数据库)中的文档表示在很大程度上受到数据使用模式的影响。

{word:"bacon", en:"bacon", ro:"sunca", fr:"jambon"}

假设您想通过传入word

  1. 直觉的
  2. 无重复
  3. 你可以有索引word
于 2013-05-25T22:59:02.953 回答
0

在您提供的两个选项中,第一个更好。但由于最多会有这么多语言,在你的情况下,我实际上会选择数组:

LANG = {en: 0, ro: 1, fr: 2}
DICT = [
  [:ham, :sunca, :jambon],
  [:egg, :ou, :œuf]
]

对于翻译,请写:

def translate( word, from: nil, to: nil )
  from = LANG[from]
  to = LANG[to]
  i = DICT.index { |entry| entry[from] == word }
  return DICT[i][to]
end

translate( :egg, from: :en, to: :fr )
#=> :œuf

请注意,尽管已经努力减少字典的大小,但就速度而言,更快的匹配算法将可用,例如使用。后缀树。

于 2013-05-25T23:19:58.103 回答