পোস্টগ্রাজে দ্রুত হামিং দূরত্বের প্রশ্নগুলি


15

আমার কাছে একটি বৃহত ডাটাবেস (16 এম সারি) রয়েছে যা ধারণাগত ধারণাগত হ্যাশগুলি ধারণ করে।

আমি একটি যুক্তিসঙ্গত সময়সীমার মধ্যে হ্যামিংয়ের মাধ্যমে সারিগুলির সন্ধান করতে সক্ষম হতে চাই ।

বর্তমানে, আমি যতদূর বিষয়টি সঠিকভাবে বুঝতে পেরেছি, আমি মনে করি যে এখানে সর্বোত্তম বিকল্পটি একটি কাস্টম এসপি-জিএসটি বাস্তবায়ন হবে যা বিকে-ট্রি প্রয়োগ করে , তবে এটি অনেক কাজের মতো মনে হয়, এবং আমি এখনও ব্যবহারিক বিষয়ে অস্পষ্ট y একটি কাস্টম সূচকটি যথাযথভাবে প্রয়োগ করার বিশদ। Hamming দূরত্ব গণনা করা হচ্ছে নম্র যথেষ্ট, এবং আমি কি করতে যদিও জানি সি,।

মূলত, এখানে উপযুক্ত পদ্ধতির কী? আমার একটি হ্যাশের নির্দিষ্ট সম্পাদনা-দূরত্বের মধ্যে ম্যাচের জন্য ক্যোয়ারী করতে সক্ষম হওয়া দরকার। যেহেতু আমি এটি বুঝতে পারি, সমান দৈর্ঘ্যের স্ট্রিং সহ লেভেনস্টাইন দূরত্ব কার্যকরীভাবে হ্যামিং করছে, তাই আমি যা চাই তার জন্য কমপক্ষে কিছু বিদ্যমান সমর্থন রয়েছে যদিও এটি থেকে কোনও সূচক তৈরি করার কোনও সুস্পষ্ট উপায় নেই (মনে রাখবেন, আমি যে মানটির জন্য জিজ্ঞাসা করছি পরিবর্তিত হয় a আমি একটি নির্দিষ্ট মান থেকে দূরত্বের প্রাক গণনা করতে পারি না, কারণ এটি কেবলমাত্র সেই এক মানের জন্য কার্যকর হবে) be

হ্যাশগুলি বর্তমানে 64৪-চর স্ট্রিং হিসাবে সংরক্ষণ করা হয় যা হ্যাশের বাইনারি ASCII এনকোডিং রয়েছে (যেমন "10010101 ...") তবে আমি এগুলি সহজেই যথেষ্ট পরিমাণে 64 এ রূপান্তর করতে পারি। আসল ইস্যুটি হ'ল আমার তুলনামূলকভাবে দ্রুত জিজ্ঞাসা করতে সক্ষম হওয়া দরকার।

এটি দেখে মনে হচ্ছে এটা আমি কি সাথে করতে চান লাইন বরাবর কিছু অর্জন করা সম্ভব হতে পারে pg_trgm, কিন্তু আমি কিভাবে trigram ম্যাচিং mechamism কাজের উপর একটি বিট অস্পষ্ট আছি (বিশেষ করে, কি মিল আছে মেট্রিক এটা ফেরৎ আসলে চিত্রিত করে? দেখে মনে হচ্ছে ধরনের সম্পাদনা-দূরত্ব)

Sertোকানো কর্মক্ষমতা সমালোচনামূলক নয় (প্রতিটি সারিটির জন্য হ্যাশগুলি গণনা করা খুব কম্পিউটেশনালি ব্যয়বহুল), তাই আমি প্রাথমিকভাবে অনুসন্ধানের বিষয়ে যত্নশীল।


স্মার এক্সটেনশানটিতে আপনার যা প্রয়োজন তা হতে পারে: pgcon.org/2012/schedule/attachments/252_smlar-2012.pdf বা pg_siversityity: pgcon.org/2009/schedule/attachments/108_pg_siversityity.pdf
নীল ম্যাকগুইগান

@ নীলম্যাকগুইগান - আকর্ষণীয়! সেখানে প্রথম উপস্থাপনাটি প্রকৃতপক্ষে লোকেরা যারা পোস্টগ্রিসে এসপি-জিএসটি এবং জিআইএসটি সিস্টেম বজায় রাখে।
ভুয়া নাম

যদিও প্রথম লিঙ্কটি মূলত আলাদা কিছু জন্য something তারা সেট চৌরাস্তা খুঁজছেন, আমি হ্যামিং দূরত্বের সন্ধান করছি। আমি ফ্যাসেসগুলিকে একটি সেটে ফিঙ্গেল করতে পারি তবে এটি চরম অগোছালো হবে এবং অন্য কোথাও প্রচুর সমর্থন কোডের প্রয়োজন।
ভুয়া নাম

এফডাব্লুআইডাব্লু, এই মুহুর্তে, আমি আমার নিজের ইনডেক্সিং সিস্টেমটি বাস্তবায়নের জন্য কম-বেশি সিদ্ধান্ত নিয়েছি। আমি এই মুহুর্তে কাস্টম এসপি-জিএসটি সূচকগুলি সন্ধান করছি, তবে আমি কী করছি তা আমার কোনও ধারণা নেই।
ভুয়া নাম

1
@ ফেকনাম: আপনি যখন হামিংয়ের দূরত্বটি বলবেন তখন আমি ধরে নিচ্ছি যে আপনি হ্যাশটির মূল্যবান হ্যামিংয়ের দূরত্বটিকে মানচিত্রের স্ট্রিংগুলি বোঝায়, চিত্রগুলি নয়? অন্য কথায়, আপনি জিজ্ঞাসা করতে
যাচ্ছেন:

উত্তর:


11

ঠিক আছে, আমি একটি কাস্টম পোস্টগ্রিস সি এক্সটেনশন লেখার জন্য কিছুটা সময় ব্যয় করেছি এবং কেবলমাত্র একটি সাইথন ডাটাবেস র‌্যাপার লিখেছি যা স্মৃতিতে বিকে-ট্রি কাঠামো বজায় রাখে।

মূলত, এটি ডাটাবেস থেকে ফ্যাশ মানগুলির একটি মেমরি অনুলিপি বজায় রাখে এবং ডাটাবেসের সমস্ত আপডেট বিকে-ট্রিতে পুনরায় খেলানো হয়।

সব এখানে গিথুব উপর আছে । এটিতে প্রচুর ইউনিট-পরীক্ষা রয়েছে।

4 টি দূরত্বে আইটেমগুলির জন্য 10 মিলিয়ন হ্যাশ মানগুলির একটি ডেটাসেটে জিজ্ঞাসা করা গাছের মানগুলির 0.25% -0.5% স্পর্শ করে এবং ~ 100 এমএস নেয়।


স্মৃতিতে 16 মিলিয়ন সারি নিয়ে বিকে-ট্রি? আমি 1000 চিত্র এবং 2000 চিত্র সহ প্রতিটি চিত্রের সাথে আমার অনুরূপ মেমরির আকারটি বিশাল দেখছিলাম।
স্টুয়ার্ট

@ স্টেটওয়ার্ট - এটির অনেক কিছুই আপনার হ্যাশের আকারের উপর নির্ভর করে। আমার ক্ষেত্রে, হ্যাশ মান আউটপুট হল একটি একক -৪-বিট বিটফিল্ড যা আমি অন্তত 64৪ হিসাবে সঞ্চয় করি। আপনার কাছে মনে হয় অনেক বড় ফ্যাশ ডেটা টাইপ রয়েছে। আমিও নিশ্চিত নই যে অনুসন্ধানগুলি কীভাবে এরকম একটি আলাদা ডেটাটাইপগুলিতে কাজ করবে। তারা এখনও একটি মেট্রিক স্পেস? আপনি কিভাবে দূরত্ব গণনা করবেন?
ভুয়া নাম

আমি ওপেনসিভির সাথে সরবরাহিত এফএলএনএএন মার্চারে 32 বিট বর্ণনাকারী ব্যবহার করছি। দূরত্ব গণনা করতে আমি লো এর অনুপাতের ভিত্তিতে একটি প্রান্তিকের সাথে হাতুড়ি ব্যবহার করি। এই মুহুর্তে আমি নিশ্চিত নই যে কেডি-ট্রি কাঠামো সরবরাহ করে এমন মেমোরি এফএলএএনএন-এর সাথে চেষ্টা করা এবং এটির সাথে সবচেয়ে ভাল চেষ্টা করা বা আপনার মতো অনুরূপ কোনও সমাধানে স্যুইচ করা ভাল কিনা। আপনি কেন নিজের রোলিং শেষ করলেন এবং লাইব্লাফ্লান জাতীয় কিছুর দিকে যাচ্ছেন না?
স্টুয়ার্ট

@ স্টিওয়ার্ট - আমি আমার নিজস্ব রোল করিনি। আমি সুপার বোরিং ডিএফটি-ভিত্তিক হ্যাশিং ব্যবহার করছি ।
ভুয়া নাম

7

মোয়ার উত্তর!

ঠিক আছে, আমি অবশেষে একটি কাস্টম পোস্টগ্রাস এসকিউএল সূচক এক্সটেনশন লিখতে সময় নিয়েছি। আমি এসপি-জিএসটি ইন্টারফেস ব্যবহার করেছি ।

এটি মোটামুটি চ্যালেঞ্জিং ছিল, বেশিরভাগ কারণ পোগগ্রিস বড়

যাইহোক, যথারীতি, এটি এখানে গিথুব এ চলেছে ।

পারফরম্যান্স অনুসারে, বর্তমানে এই প্রশ্নের আমার অন্য উত্তরে খাঁটি ইন মেমরি বাস্তবায়নের জন্য এটি 2-3 গুন কম, এমএস / ক্যোয়ারী - 150 এমএস / ক্যোয়ারী, যা এখনও বেশ ছোট)।


তুমি অসাধারণ! আপনি কীভাবে ইনস্টল করবেন তার একটি README যুক্ত করতে পারেন? আমি
পোস্টগ্র্রেসে

1
@ হাইপওয়াল্ফ - রেপোর গোড়ার একটি রিডএমই রয়েছে । এটি কি আপনি চান তা আবরণ না?
ভুয়া নাম

আমার ভুল, আমি এটি দেখতে পেলাম না, আমি কোথায় খুঁজছি তা নিশ্চিত নই: /
হাইপওয়ल्फ

README পাশাপাশি খুঁজছিল। এটি মূল ফোল্ডারে রয়েছে। লিঙ্কটি কিছু সাবফোল্ডারে যাচ্ছে। এটা বিভ্রান্তিকর ছিল।
ভাগ্যোডোনাল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.