首页 > 解决方案 > 将文本输入数据库的不同选择

问题描述

我正在制作一个图像数据库。每张图片中都有一定数量的中文文字。创建数据库后,我希望能够搜索文本并找到它所附加的图像,反之亦然。

在每幅图像中,最大和页面最高的文本是“主要文本”,其余的是“次要文本”。在一些图像中,离散辅助文本的数量很高(> 10 条)。图像的文本差异很大,因此一张图像与另一张图像具有相同文本的可能性很小。请看一个示例图像(下图),其中有一个主要文本(某词)和三个辅助文本(战略、微笑、容易)。

我的问题是:我的“图像”表中是否应该有两列,第一列是“主要文本”,另一列是“次要文本”,包含图像中的所有其他文本?或者我应该有多列允许 X 数量的离散辅助文本?到目前为止,我认为创建“文本”表并通过关联表将其与图像表连接起来相对没有意义,因为大多数文本都是唯一的。

一个问题:因为我正在查看的图像大部分不使用标点符号,并且汉字之间没有空格,所以将所有“辅助文本”放在一列很容易导致查询混淆。例如,如果我将示例图像中的所有三个辅助文本(微笑、微笑和容易)都连接起来,它就变成了微笑。但是现在变成了一个文本,包含五个字,这可能是一个微笑,笑笑,战略。这会在我的查询中造成混乱。

示例图像1

标签: databasetextcjk

解决方案


最干净的方法可能是为(至少是次要的)文本创建一个单独的表。如果它们在很大程度上是独一无二的,您可以在没有关联表的情况下执行此操作。

images

ID | image | main text
---+-------+----------
 1 | <img> | 某词

secondary

ID | image_id | secondary text
---+----------+---------------
 1 |        1 | 战略
 2 |        1 | 微笑 
 3 |        1 | 容易

如果它更适合您的用例,您还可以将所有文本及其类型放入第二个表中:

images

ID | image 
---+-------
 1 | <img>

text

ID | image_id | text | type
---+----------+------+----------
 1 |        1 |  战略 | 2
 2 |        1 |  微笑 | 2
 3 |        1 |  容易 | 2
 4 |        1 |  某词 | 1

推荐阅读