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

提供する 2 つのオプションのうち、最初のオプションの方が適しています。しかし、せいぜい非常に多くの言語があるため、あなたの場合、実際には配列を使用します。

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 に答える