我有一个包含照片的 Postgres 数据库,我想让人们按颜色搜索它们。我已经为每张照片定义了多种颜色(1-5),并且我正在使用LAB 颜色(感知颜色空间,在三个维度中定义:亮度加两个颜色维度)。
我的问题是:在 Postgres 中执行此操作的最佳方法是什么?它本质上是一个三维搜索,所以我应该使用空间索引吗?
我的要求是:
- 按颜色运行边界框搜索(查找颜色在距离 X 与颜色 Y 之间的照片)。
- 按与颜色 X 的距离对结果进行排名(首先返回颜色最接近颜色 Y 的照片)
- r-tree-like 性能。
我已经使用 Python 中的 rtree 索引构建了一个概念验证,并且运行良好。我只是不确定如何使用 Postgres 表来复制它。