2015-10-18 141 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