2

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

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

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

3. 贷记表——该表有3个字段(图像、人物和贷记类型)。它的目的是将一些人与图像相关联,作为该图像的学分。每张图片可以有多个人(有导演、摄影师、道具师等)。此外,一个人在多张图像中都有功劳。

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

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

有没有使用 Lucene 经验的人可以帮助我解决这个问题?我知道非规范化没有通用的解决方案,这就是为什么我提供了一个更具体的例子。

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

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

4

1 回答 1

0

您可以为每个人创建一个Document连接所有相关图像的描述(附加到人员信息或单独的Field)。

Document或者,您可以为每个人创建一个最小值,Document为每个图像创建一个,将创建者的姓名和信用信息放在图像的一个单独字段中,Document并通过将人员 ID(或人员DocumentID)放在第三个而不是索引字段。(Lucene 面向平面文档索引,而不是关系数据,但关系可以手动定义。)

这实际上是您要搜索的内容(图像或人物)以及每个内容是否包含足够的关键字以进行搜索的问题。尝试几个选项,看看它们是否足够好并且不超过可用空间。

不过,信用表可能不是一个很好的Document建设候选者。

于 2011-03-11T16:29:24.297 回答