在数据库中存储语言词典

时间:2017-07-04 22:34:40

标签: php mysql dictionary

我正在创建一个目前只有普通话和西班牙语的语言应用程序。

目前,我自己创建的字典只是作为JSON加载而不存储在数据库中,但我找到了完整的可下载字典,例如CEDICT for Chinese来为我做定义。话虽这么说,这个文件长115k行,每行6列。

我还需要为西班牙语做这个,然后我计划的其他语言包括。

注意:

  • MySQL DB
  • Laravel ORM(PHP)

话虽如此,存储这些数据的最佳方法是什么?

我假设是单独的表,dictionary_zhdictionary_es,但我也可以将每个字典存储在字典表中,并为locale添加一列,并根据该表进行查询。 This SO answer表示1m记录对于表来说不是“太多”,它只是定义了如何索引表。

是的,有人推荐一本可下载的西班牙语 - 英语词典吗?

注意:我正在下载字典并将其剪切成可以加载到CSV中的内容

Traditional Simplified  Pinyin  Meaning       Level Quest
佟               佟       Tong2   surname Tong    1     2
...

我正在翻译它,只需传入识别字符,在本例中为,并抓住其含义。

1 个答案:

答案 0 :(得分:1)

我会将每个字典存储在一个单独的表中,以抽象我如何根据语言环境获取单词的定义,而无需知道字典(在下图中映射为Dictionary类型)如何操作它的翻译。当您可能拥有不在数据库中的字典时(例如通过API进行翻译的字典),这非常有用。

UML

方法translate()针对每种类型的Dictionary(在您的情况下为ChineseDictionarySpanishDictionary)实施的方式不同。

从数据管理的角度来看,这种方法的另一个优点是,在发布新版本的字典时,您不必对数据进行大量操作,这使维护成本低廉。