Próbuję poprawić wyszukiwanie podobnych zdjęć Odtłuszczony w bazie danych MySQL. Teraz ja porównując pHash licząc odległość Hamminga tak:Optymalizacja odległości Hamminga dla MySQL lub PostgreSQL?
SELECT * FROM images WHERE BIT_COUNT(hash^2028359052535108275) <= 4
wyników dla wybierając (MyISAM silnika)
- 20000 wierszy; czas zapytania: < 20ms
- 100000 wierszy; czas zapytania ~ 60ms # to było w porządku, aż osiągnięto 150000 wierszy
- 300000 wierszy; czas zapytania ~ 150ms
Tak więc zwiększenie czasu zapytania zależy od liczby wierszy w tabeli.
ja także spróbować znaleźć rozwiązanie na stackoverflow Hamming distance on binary strings in SQL
SELECT * FROM images WHERE
BIT_COUNT(h1^11110011) +
BIT_COUNT(h2^10110100) +
BIT_COUNT(h3^11001001) +
BIT_COUNT(h4^11010001) +
BIT_COUNT(h5^00100011) +
BIT_COUNT(h6^00010100) +
BIT_COUNT(h7^00011111) +
BIT_COUNT(h8^00001111) <= 4
rzędy 300000; czas zapytania ~ 240ms
Zmieniłem silnik bazy danych na PostgreSQL. Translate this MySQL query to PyGreSQL Bez powodzenia. wiersze 300000; Czas zapytania ~ 18s
Czy istnieje rozwiązanie do optymalizacji powyżej kwerendy? Mam na myśli optymalizację nie zależy od liczby wierszy.
Mam ograniczone sposoby (narzędzia), aby rozwiązać ten problem. MySQL do tej pory wydawało się najprostszym rozwiązaniem, ale mogę wdrożyć kod na każdym silniku bazy danych open source, który będzie działał z Ruby na dedykowanym komputerze. Istnieje kilka gotowych rozwiązań dla MsSQL https://stackoverflow.com/a/5930944/766217 (nie testowane). Może ktoś wie jak to przetłumaczyć na MySQL lub PostgreSQL.
Proszę pisać odpowiedzi na podstawie niektórych kodów lub obserwacji. Mamy wiele teoretycznych problemów związanych z hamming distance na stackoverflow.com
Dzięki!
Hej, próbuję zrobić podobne wyszukiwanie obrazów, tak jak ty. ale wróciłem zawsze 0?czy możesz podać mi przykładowy kod o powiązanym wyszukiwaniu z ciągiem hash? – TomSawyer