У меня есть база данных Postgres, содержащая фотографии, и я хочу, чтобы люди искали их по цвету. У меня уже есть несколько цветов (1-5), определенных для каждой фотографии, и я использую LAB colours (перцептивное цветовое пространство, определенное в трех измерениях: легкость плюс два цветовых измерения).Пространственный индекс Postgres для цветов LAB?
Мой вопрос: что это лучший способ сделать это в Postgres? Это, по сути, трехмерный поиск, поэтому я должен использовать пространственный индекс?
Мои требования:
- запустить поиск ограничивающего прямоугольника по цвету (найти фотографии с цветами в пределах расстояния X цвета Y).
- рейтинг результатов по расстоянию от цвета X (возврат фотографий с цветами, ближайшими к цвету Y)
- r-tree-like performance.
Я построил доказательство концепции с использованием индекса rtree в Python, и он работает очень хорошо. Я просто не уверен, как его реплицировать с помощью таблиц Postgres.
... или, может быть, многомерный массив был бы более уместным? – Richard
Вы ** пробовали **, используя функцию rtree postgres? Но обратите внимание, что Postgres rtree действительно транзакционный. Индекс только для чтения в памяти, скорее всего, будет быстрее, поэтому, если вам не нужны транзакции, вы можете заплатить высокую цену за то, что вам не нужно. –
Интуитивно вы хотите сохранить и запросить 3D-очки. Но встроенные типы геометрии 2d ... Тем не менее, вы можете обойти ограничение, учитывая, что цветовой компонент в цветовом пространстве Lab фактически является частью (a, b) - точкой 2d. –