2017-07-04 37 views
1

我正在創建一個語言應用程序,目前只有中文和西班牙語。在數據庫中儲存語言詞典

目前,我自己創建的字典只是簡單地加載爲JSON而沒有存儲在數據庫中,但我發現完全可下載的字典,如CEDICT for Chinese爲我做定義。這就是說,這個文件長115k行,每行6列。

我還需要爲西班牙語做這個,然後我計劃包括其他所有語言。

注:

  • MySQL數據庫
  • Laravel ORM(PHP)

話雖這麼說,有什麼來存儲這些數據的最佳方式?

我假設爲單獨的表,dictionary_zh,dictionary_es,但我也可以將每個字典存儲在字典表中,其中添加了一列locale,並基於該字段進行查詢。 This SO answer指出,1m記錄對於要處理的表不是太「太多」,它只是定義瞭如何爲表建立索引。


順便說一句,任何人都有一個良好的可下載的西班牙語 - 英語字典的建議嗎?


注意:我下載字典和切割起來到的東西,我可以加載到CSV

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

我簡單地傳遞識別字符翻譯吧,這種情況,並抓住其含義。

+0

讓您的字典分開,您必須稍後更新數據時才保留更改更新。有一個接口爲所有字典編程方式相同,例如'$ dictionaryObj-> translate($ term)'。這樣你就可以有一個簡單的翻譯方法。 如果您告訴我們更多關於翻譯是如何工作的,我可以嘗試給您更多的反饋。 –

+0

@VladimirGhetau見上文 – Growler

回答

1

我會將每個字典存儲在一個單獨的表格中,以抽取我如何根據語言環境獲取單詞的定義,而無需知道字典(如下圖中映射爲Dictionary類型)如何操作其翻譯。當您的字典不在您的數據庫中時,這非常有用,例如通過API進行翻譯的字典。

UML

方法translate()被不同地實現對每種類型的Dictionary(你的情況ChineseDictionarySpanishDictionary)。

從數據管理的角度來看,這種方法的另一個優點是,當新版本的字典發佈時,您不必對數據進行大量操作,這使維護起來很便宜。