Как сделать проверку хеша?

lutskboy
На сайте с 22.11.2013
Offline
192
812

Добрый день

Подскажите пожалуйста как сделать проверку хеша.

Есть такой хеш. Например

10010001111001....

всего 64 символа. они будут записываться в базу данных. строк будет много. тисяч 10.

потом после определенного действия я получаю новый хеш. и мне его нужно сверить с теми что в базе. и вывести те что больше всего близки к нему.

сравнение идет таким образом.

число х=64 (так как хеш 64 символа). дальше

первый символ хеша 1 сравниваем с первым символом хеша 2 --- и если не совпадение то х уменьшаем на 1

второй символ хеша 1 сравниваем с вторым символом хеша 2 --- и если не совпадение то х уменьшаем на 1

и т д

ето так бы мы сравнивали на php. а как ето организовать в базе данных я не знаю. брать все подряд из нее и сверять навернека это будет долго

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1
как ето организовать в базе данных я не знаю

БД для хранения данных, а не для вычислений. Делайте на PHP.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
lutskboy
На сайте с 22.11.2013
Offline
192
#2

придется

думал разбить этот хеш по 4 символа и записать в бд в поле с индексом FULLTEXT

а потом искать как полнотекстовый поиск. но оказалось что match against не всегда ищет числа по 4 символа.

D
На сайте с 14.01.2007
Offline
153
#3

вариант для извращенцев:

поставить elasticsearch, сделать индекс и на поле с хэшами поставить ngram=1

a алгоритм, который вы используете, называется "Расстояние Левенштейна"

dkameleon
На сайте с 09.12.2005
Offline
386
#4

1. хранить свои 64 бита в формате BIGINT

2. вычисления провозить через BIT_XOR + BIT_COUNT

Дизайн интерьера (http://balabukha.com/)
lutskboy
На сайте с 22.11.2013
Offline
192
#5
dkameleon:
1. хранить свои 64 бита в формате BIGINT
2. вычисления провозить через BIT_XOR + BIT_COUNT

Этот совет прям в точку. Вы просто гений. По больше б таких людей на форуме. И скорость прям летает.

[Удален]
#6

Посвятите пожалуйста, в каком случае нужна проверка на схожесть хэша? Мне до сих пор была нужна только абсолютная идентичность ключей.

Ведь схожесть хэша совсем не значит схожесть контента.

lutskboy
На сайте с 22.11.2013
Offline
192
#7
imagine:
Посвятите пожалуйста, в каком случае нужна проверка на схожесть хэша? Мне до сих пор была нужна только абсолютная идентичность ключей.
Ведь схожесть хэша совсем не значит схожесть контента.

у меня это используется для сравнения изображений. есть сайт с обоями на рабочий стол. дабы не грузить одинаковые - делаю проверку схожести. использую PHasher для создания хеша. результат более менее нормальный.

можно картинке изменить качество или даже обрезать(но не слишком) и скрипт ищет похожие.

правда не всегда получается ожидаемый результат. но если с изображением не слишком поиздевались то и так очень даже ничего.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий