Добрый вечер.
Как-то интересовался вопросом поиска похожих изображений:
Сравнение изображений и поиск схожих?
Суть в следующем: на сайте хранятся изображения, данные о которых лежат в бд. При загрузке нового изображения высчитывается его phash и в базе ищутся записи с небольшим отклонением. Есть таковых нет - значит изображение новое и раньше не загружалось.
Я нашел, как посчитать phash. Реализация на яве:
pastebin.com/Pj9d8jt5
Нахожу хеш. Но как хранить хэши и как осуществить поиск по расстоянию Хэмминга?
Собственно, вот что не понятно:
1. Хранить в виде строки или есть более подходящий формат, при условии что там только единицы и нули?
2. Как осуществлять поиск? Грубо говоря:
select * from tbl_iamge where hammingDistance(<мой хеш>, hash) < <минимальное допустимое различие>
Есть ли встроенный оператор для таких расчетов или нужно писать свою функцию?
3. Как строить индекс по этому полю? Нужно использовать функциональный индекс по этой функции или есть другие средства?
Я в этой теме очень слабо разбираюсь. Поэтому буду рад любым советам.