数据库设计和弹性搜索

时间:2015-10-18 12:40:49

标签: mysql database elasticsearch linked-data

免责声明: 我从未成为数据库大师。而我只是开始使用弹性搜索。 :)

我正在创建一个字典型数据库。

在MySQL术语中,我有一个“Words”表,如下所示:

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

还有一个“翻译”表,将单词连接在一起,如:

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

如何将其迁移到弹性搜索?

我创建了一个dictionary类型的索引word

我如何设置translations表并仍然保留对现有“单词”的引用?我错过了一些概念性的东西吗?

1 个答案:

答案 0 :(得分:1)

ElasticSearch在概念上是基于文档的,而不是基于关系的。实现目标的一种可能方式是创建"翻译" index,其中每个条目都包含一组嵌套的" word - POS - 语言"对和一个"意思"领域。然后,您可以搜索包含给定单词的每个条目的索引。

或者,您可以考虑" word"翻译的儿童文件"。这与您目前的方法更相似。在ElasticSearch中,您必须查找给定单词的父翻译,然后再次调用以查找属于给定语言的翻译的子单词。

我无法判断这是否是最有用的翻译方法,因为单词具有多种含义,对于不同的语言,它们并不完全重叠,但这是一个不同的主题。