मैं MySQL डेटाबेस में phashed खोज समान छवियों को बेहतर बनाने की कोशिश कर रहा हूं। अभी मैं की तुलना pHash गिनती इस तरह आलोचनात्मक दूरी: का चयन (इंजन MyISAM)MySQL या PostgreSQL के लिए हैमिंग दूरी अनुकूलन?
- 20000 पंक्तियों के लिए
SELECT * FROM images WHERE BIT_COUNT(hash^2028359052535108275) <= 4
परिणाम; क्वेरी समय < 20ms
- 100000 पंक्तियां; प्रश्न समय ~ 60ms # यह ठीक था, जब तक यह 150000 पंक्तियों तक पहुंच गया
- 300000 पंक्तियां; क्वेरी समय ~ 150ms
तो प्रश्न समय बढ़ाना तालिका में पंक्तियों की संख्या के आधार पर निर्भर करता है।
मैं भी 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
पंक्तियों 300000; क्वेरी समय ~ 240ms
मैंने डेटाबेस इंजन को PostgreSQL में बदल दिया। सफलता के बिना Translate this MySQL query to PyGreSQL । पंक्तियां 300000; क्वेरी समय ~ 18s
वहाँ प्रश्नों ऊपर अनुकूलन करने के लिए किसी भी समाधान है? मेरा मतलब ऑप्टिमाइज़ेशन पंक्तियों की संख्या से वंचित नहीं है।
मैं सीमित विधियों (उपकरण) इस समस्या को हल करने के लिए है। MySQL अब तक का सबसे आसान समाधान प्रतीत होता है लेकिन मैं प्रत्येक ओपन सोर्स डेटाबेस इंजन पर कोड तैनात कर सकता हूं जो रूबी के साथ समर्पित मशीन पर काम करेगा। एमएसएसक्यूएल https://stackoverflow.com/a/5930944/766217 (परीक्षण नहीं किया गया) के लिए कुछ तैयार समाधान हैं। हो सकता है कि किसी को यह पता चले कि MySQL या PostgreSQL के लिए इसका अनुवाद कैसे करें।
कृपया, कुछ कोड या अवलोकनों के आधार पर उत्तर पोस्ट करें। हम पर stackoverflow.com
धन्यवाद आलोचनात्मक अंतर के बारे में सैद्धांतिक मुद्दों का एक बहुत कुछ है!
अरे, मैं आपके जैसे ही एक समान छवि खोज करने की कोशिश कर रहा हूं। लेकिन मैं हमेशा वापस आ गया 0 है?क्या आप हैश स्ट्रिंग के साथ संबंधित खोज के बारे में नमूना कोड प्रदान कर सकते हैं? – TomSawyer