Tôi đang cố gắng cải thiện các hình ảnh tương tự như tìm kiếm được nhúng trong cơ sở dữ liệu MySQL. Ngay bây giờ tôi so sánh pHash đếm Hamming khoảng cách như thế này:Hamming Tối ưu hóa khoảng cách cho MySQL hoặc PostgreSQL?
SELECT * FROM images WHERE BIT_COUNT(hash^2028359052535108275) <= 4
Kết quả lựa chọn (động cơ MyISAM)
- 20000 hàng; thời gian truy vấn < 20ms
- 100000 hàng; thời gian truy vấn ~ 60ms # điều này là tốt, cho đến khi đạt đến 150000 hàng
- 300000 hàng; thời gian truy vấn ~ 150ms
Vì vậy, thời gian truy vấn sẽ tùy thuộc vào số lượng hàng trong bảng.
tôi cũng cố gắng giải pháp được tìm thấy trên 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
hàng 300000; thời gian truy vấn ~ 240ms
Tôi đã thay đổi công cụ cơ sở dữ liệu thành PostgreSQL. Translate this MySQL query to PyGreSQL Không thành công. hàng 300000; thời gian truy vấn ~ 18s
Có giải pháp nào để tối ưu hóa các truy vấn trên không? Tôi có nghĩa là tối ưu hóa không phụ thuộc vào số hàng.
Tôi có các cách hạn chế (công cụ) để giải quyết vấn đề này. MySQL cho đến nay dường như là giải pháp đơn giản nhất nhưng tôi có thể triển khai mã trên mọi công cụ cơ sở dữ liệu nguồn mở sẽ làm việc với Ruby trên máy chuyên dụng. Có một số giải pháp sẵn sàng cho MsSQL https://stackoverflow.com/a/5930944/766217 (không được kiểm tra). Có thể ai đó biết cách dịch nó cho MySQL hoặc PostgreSQL.
Vui lòng đăng câu trả lời dựa trên một số mã hoặc quan sát. Chúng tôi có rất nhiều vấn đề lý thuyết về khoảng cách ham mê trên stackoverflow.com
Cảm ơn!
này, tôi đang cố thực hiện tìm kiếm hình ảnh tương tự như bạn. nhưng tôi trở về luôn luôn là 0?bạn có thể cung cấp cho tôi mã mẫu về tìm kiếm có liên quan bằng chuỗi băm không? – TomSawyer