数据库设计和弹性搜索
问题描述:
免责声明:我从来没有做过DB大师。我只是开始使用Elastic Search。 :)数据库设计和弹性搜索
我创建一个字典型数据库。
在MySQL方面,我有 “字” 的表,如下所示:
|-------------------
| Words
|-------------------
| id
| name
| part_of_speech
| language
|-------------------
和 “翻译” 的表,将词链接在一起的情况
|-------------------
| Translations
|-------------------
| word_a_id
| word_b_id
| sense
|-------------------
如何是否可以迁移到Elastic Search?
我创建了一个索引dictionary
,其类型为word
。
我怎样才能设置一个translations
表,并仍然保留对现有“单词”的引用?我错过了一些概念吗?
答
ElasticSearch在概念上是基于文档的,而不是基于关系的。实现你想要的一种可能的方式是创建“翻译”索引,其中每个条目将包含一组嵌套的“单词 - POS-语言”对和“含义”字段。然后,您可以在包含给定单词的每个条目中搜索此索引。
或者,您可以考虑“单词”“翻译”的子文档。那会更接近你目前的做法。在ElasticSearch中,您必须查找给定单词的父翻译,然后再次调用以找到属于给定语言的翻译的子单词。
虽然我不知道这是否是最有用的翻译方法,因为单词有多重含义,对于不同的语言,它们并不完全重叠,但这是一个不同的主题。
非常感谢您的想法。绝对有用的观点! ;-) –
我的一个主要担心(例如在你的第一种方法中)是如何避免重复。我的意思是......一个“单词”(单词本身加上它的属性 - 是名词吗?是女性名词?也许是动词?是否有基于拉丁语的转录?等等)可以是一部分和许多不同的“翻译部分”。我是否重新复制它? :S –
是的,在这种方法中,你会重复它。这意味着如果单词改变了,你必须重新索引包含该单词的所有条目。 – Ashalynd