আপনার যা প্রয়োজন তার সম্পূর্ণ বিবরণ না জেনে আপনি সম্ভবত নিম্নলিখিতগুলির মধ্যে একটি করতে চান:
স্পিঙ্ক্স ইনস্টল এবং কনফিগারেশনে কী জড়িত তা আমি পুরোপুরি জানি না; তবে, আমি ইমপ্রেশনের আওতায় আছি আপনি এটি একটি ডেটাবেজে নির্দেশ করতে পারেন, কোন ক্ষেত্রকে সূচী করতে হবে, কীভাবে ফলাফলকে ওজন করতে হবে এবং এটি আপনাকে মিলে যাওয়া রেকর্ডগুলির একটি আদেশিত তালিকা প্রদান করবে।
ব্যবহারকারী-মুখোমুখি বা মিশন সমালোচনামূলক জিনিসগুলির জন্য, একটি বিদ্যমান অনুসন্ধান সরঞ্জামটি ব্যবহার করুন।
যদি আপনি কেবল একাডেমিক বোধ করছেন ... এনজিআরএম দিয়ে খেলুন:
একটি এনজিআরএম অনুসন্ধান সারণীটি আপনার সম্ভাব্য মিলগুলির প্রাথমিক সেট হিসাবে কাজ করতে পারে এবং আপনি ফলগুলি ছাঁটাই এবং সাজানোর জন্য লেভেনস্টাইন দূরত্ব ব্যবহার করতে পারেন।
ধরে নিই যে আপনি অনুসন্ধান করতে চান people
, আপনি এর মতো কিছু করতে পারেন:
_ people _________
personId: int
name: varchar
soundex_name: varchar
_ people_ngrams __
personId: int
ngramId: int
_ ngrams _________
ngramId: int
ngram: char(3)
count: int
আপনি হয় পর্যায়ক্রমে আপনার এনজিআরগুলি পুনর্নির্মাণ করতে পারেন বা এটিকে ফ্লাইটে তৈরি করতে পারেন। যে কোনও উপায়ে, একটি সাধারণ, নিষ্পাপ অনুসন্ধান অ্যালগরিদম এর মতো দেখতে পাওয়া যায়:
search_ngrams = ngrammify(soundex(search_string));
notable_ngrams = select top 10 *
from ngrams
where ngram in (search_ngrams)
order by count asc;
possible_matches = select top 1000 distinct people.*
from people_ngrams, people
where ngramId in (notable_ngrams);
best_matches = top 100 possible_matches
ordered by Levenshtein_distance(match, soundex(search_string));
এর সাথে বেশ সমান কিছু ব্যবহার করে (তবে কিছুটা বেশি এনগ্রাম "জনপ্রিয়তা" টিউনিং, ব্ল্যাকলিস্টস, হোয়াইটলিস্টস ইত্যাদি), আমি এই ধরণের অ্যালগোরিদমকে বজায় রেখে খুব সহজেই ডেটা সেটগুলির মধ্যে রেকর্ডগুলি একত্রে মিশ্রিত করেছি, পাশাপাশি কাস্টম ফাজি অনুসন্ধানের সুবিধার্থে করেছি ইউটিলিটি এবং চলমান রেকর্ড ডি-সদৃশ প্রচেষ্টা।
এখন, আমার ক্ষেত্রে, আমি কয়েক মিলিয়ন রেকর্ডের সাথে মিলে যাচ্ছি না, আমি প্রত্যেকে কয়েক হাজার রেকর্ডের ক্রম অনুসারে দুটি ডেটা সেটগুলির মধ্যে সবচেয়ে ভাল সম্ভাব্য সংশ্লেষগুলি নির্বাচন করতে চাইছিলাম। এবং, আমরা চেয়েছিলাম যে এটি মোটামুটি দ্রুত কাজ করবে - কয়েক মিনিটের মধ্যে। (দ্রুত, 100,000 * 100,000 কী?) এবং, আমরা সফল হয়েছি।
সুতরাং, সঠিক টিউনিংয়ের মাধ্যমে, এই ধরণের জিনিসটি চটজলদি এবং কার্যকর হতে পারে। আমরা শেষ পর্যন্ত কয়েক মিনিটের মধ্যে একটি নম্র, তারিখযুক্ত, দ্বৈত-কোর মেশিনে একীভূত সেট উত্পাদন করতে সক্ষম হয়েছি, "প্রশ্নবিদ্ধ" সাথে স্বয়ংক্রিয়ভাবে ম্যানুয়াল পর্যালোচনার জন্য পতাকাঙ্কিত হয়েছে। তবে, এনগ্রামের জনপ্রিয়তা / প্রাসঙ্গিকতার মিষ্টি-স্পট এবং ডান দিকের দূরত্বের চৌম্বক, এবং কালো তালিকাভুক্ত, এবং হোয়াইটলিস্টগুলি ... এটি খুঁজতে অনেক সময় লেগেছে
বলেছে , আপনি এই স্টাফের উপর কাজ করে কোনও গর্তে সত্যই চুষতে পারেন। যে কোনও বাস্তব-বিশ্বের উত্পাদন-স্তরের স্টাফের জন্য, আপনার সাধারণত একটি সুপ্রতিষ্ঠিত সরঞ্জাম ব্যবহার করা উচিত যা ইতিমধ্যে এই ধরণের অনুসন্ধানের জন্য তৈরি এবং অনুকূলিত হয়েছে।
স্পিনক্স বা লুসিনের মতো ।