gpt4 book ai didi

database - 用于 Lucene 索引的数据库表的非规范化

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:58 24 4
gpt4 key购买 nike

我刚开始使用 Lucene,我正在尝试为数据库编制索引,以便对内容执行搜索。我对索引感兴趣的有 3 个表:

<强>1。图像表 - 这是一个表,其中每个条目代表一个图像。每张图片都有一个唯一的 ID 和一些其他信息(标题、描述等)。

<强>2。 People 表 - 这是一个表,其中每个条目代表一个人。每个人都有一个唯一的 ID 和其他信息,如(姓名、地址、公司等)

<强>3。信用表 - 该表有 3 个字段(图像、人物和信用类型)。它的目的是将某些人与图像相关联,作为该图像的信用。每张图片可以有多个署名人员(有导演、摄影师、 Prop 师等)。此外,一个人在多张图片中都有署名。

我正在尝试为这些表编制索引,以便我可以使用 Lucene 执行一些搜索,但正如我所读,我需要展平结构。

我想到的第一个解决方案是为图像/信用人的每个组合创建 Lucene 文档。恐怕这会在索引中创建大量重复内容(图像/人物的所有详细信息都必须在处理图像的每个人的每个文档中重复)。

有没有熟悉 Lucene 的人可以帮助我解决这个问题?我知道不存在反规范化的通用解决方案,因此我提供了一个更具体的示例。

谢谢,如果有人需要,我很乐意提供有关数据库的更多信息

PS:不幸的是,我没有办法改变数据库的结构(它属于客户端)。我必须利用我所拥有的。

最佳答案

您可以为每个人创建一个文档,并将所有相关图像的描述串联起来(附加到人物信息或在单独的字段中)。

或者,您可以为每个人创建一个最小的 Document,为每个图像创建一个 Document,将创建​​者的姓名和信用信息放在image Document 并通过将人员 ID(或人员 Document id)放在第三个非索引字段来链接它们。 (Lucene 适用于平面文档索引,而不是关系数据,但可以手动定义关系。)

这实际上取决于您要搜索什么,是图像还是人物,以及每个搜索是否包含足够的关键字以实现搜索功能。尝试几个选项,看看它们是否工作得足够好并且不超过可用空间。

不过,credit 表可能不是Document 构造的良好候选对象。

关于database - 用于 Lucene 索引的数据库表的非规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5275365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com