2015-10-18 98 views
0

免責聲明:我從來沒有做過DB大師。我只是開始使用Elastic Search。 :)數據庫設計和彈性搜索


我創建一個字典型數據庫。

在MySQL方面,我有 「字」 的表,如下所示:

|------------------- 
| Words 
|------------------- 
| id 
| name 
| part_of_speech 
| language 
|------------------- 

和 「翻譯」 的表,將詞鏈接在一起的情況

|------------------- 
| Translations 
|------------------- 
| word_a_id 
| word_b_id 
| sense 
|------------------- 

如何是否可以遷移到Elastic Search?

我創建了一個索引dictionary,其類型爲word

我怎樣才能設置一個translations表,並仍然保留對現有「單詞」的引用?我錯過了一些概念嗎?

回答

1

ElasticSearch在概念上是基於文檔的,而不是基於關係的。實現你想要的一種可能的方式是創建「翻譯」索引,其中每個條目將包含一組嵌套的「單詞 - POS-語言」對和「含義」字段。然後,您可以在包含給定單詞的每個條目中搜索此索引。

或者,您可以考慮「單詞」「翻譯」的子文檔。那會更接近你目前的做法。在ElasticSearch中,您必須查找給定單詞的父翻譯,然後再次調用以找到屬於給定語言的翻譯的子單詞。

雖然我不知道這是否是最有用的翻譯方法,因爲單詞有多重含義,對於不同的語言,它們並不完全重疊,但這是一個不同的主題。

+0

非常感謝您的想法。絕對有用的觀點! ;-) –

+0

我的一個主要擔心(例如在你的第一種方法中)是如何避免重複。我的意思是......一個「單詞」(單詞本身加上它的屬性 - 是名詞嗎?是女性名詞?也許是動詞?是否有基於拉丁語的轉錄?等等)可以是一部分和許多不同的「翻譯部分」。我是否重新複製它? :S –

+0

是的,在這種方法中,你會重複它。這意味着如果單詞改變了,你必須重新索引包含該單詞的所有條目。 – Ashalynd