1

我有一个包含照片的 Postgres 数据库,我想让人们按颜色搜索它们。我已经为每张照片定义了多种颜色(1-5),并且我正在使用LAB 颜色(感知颜色空间,在三个维度中定义:亮度加两个颜色维度)。

我的问题是:在 Postgres 中执行此操作的最佳方法是什么?它本质上是一个三维搜索,所以我应该使用空间索引吗?

我的要求是:

  • 按颜色运行边界框搜索(查找颜色在距离 X 与颜色 Y 之间的照片)。
  • 按与颜色 X 的距离对结果进行排名(首先返回颜色最接近颜色 Y 的照片)
  • r-tree-like 性能。

我已经使用 Python 中的 rtree 索引构建了一个概念验证,并且运行良好。我只是不确定如何使用 Postgres 表来复制它。

4

1 回答 1

0

我看到了几个选项。PostGIS 具有多维几何类型,可以提供您正在寻找的内容。例如,您可以在 3d 点上制作边界框。那将是最简单的。

PostGIS 是一个地理空间插件,但它也可以用于大量其他事情。即使不是 GIS,您正在寻找的东西也是空间的,这可能是这项工作的最佳工具。PostGIS 将处理您的所有索引需求,还包括距离搜索等。

如果这是不可接受的,您可以编写自己的类型。您可能还想为它们编写 GiST 运算符,并且那里有相当大的学习曲线。

于 2013-08-31T08:25:25.753 回答