ব্যাসার্ধের মধ্যে বাড়িগুলি সন্ধান করা


10

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

কোন ধারনা? আপনি কীভাবে এটি বাস্তবায়ন করবেন? আমি তাকে বলেছিলাম যে আমি জানি না কারণ আমি এর আগে কোনও ভূ-সম্পর্কিত কোনও জিনিস আগে কখনও করিনি।

উত্তর:


6

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

দূরত্বগুলি সম্ভবত 20M বা তার চেয়ে কম বলে মনে হচ্ছে আপনি সম্ভবত সমতল পৃথিবীটি দূরত্ব গণনা করার জন্য ধরে নিচ্ছেন যদিও আপনি 20M প্রান্তের দিকে লক্ষণীয় ত্রুটিগুলি দেখতে শুরু করবেন, যদি আরও বড় রেঞ্জগুলি সঠিকভাবে প্রয়োজন হয় তবে আপনাকে আরও ভাল দূরত্বের মডেলগুলি সন্ধান করতে হবে পৃথিবী যেমন হ্যাভারসাইন দূরত্ব

অবশ্যই একটি অগণিত অন্যান্য বিবরণ রয়েছে যেগুলি নিয়ে আলোচনা করা যেতে পারে যেমন ইউআই ডিজাইন, ডিবি স্কিমা যা তাদের নিজস্ব অধিকারে পুরো বিষয় হতে পারে


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

1
প্রকৃতপক্ষে, এবং যদি কয়েকটি মিথ্যা ধনাত্মক গুরুত্বপূর্ণ না হয় তবে আপনি প্রকৃত দূরত্বের গণনাটি পুরোপুরি এড়িয়ে যেতে পারেন এবং কেবল এমবিআর
জেকে

একটি বিষয় সম্পর্কে আমি কৌতূহলী: বিক্রয়ের জন্য বিপুল সংখ্যক বাড়িগুলি দেওয়া, সংস্থাগুলি কী (যেমন জিলো হতে পারে?) এটি সমস্ত ডিবিতে সঞ্চয় করে এবং কেবল এ থেকে নির্বাচন করা চালিয়ে যায়? আমি কল্পনা করেছি যে এটি একটি দুর্দান্ত পারফরম্যান্স হিট হবে এবং গ্রাফের উপস্থাপনা সহ এগুলি সমস্ত স্মৃতিতে সঞ্চয় করা খুব দ্রুত হবে - সম্ভবত ম্যাট্রিক্স বা সংলগ্ন তালিকা এবং নিকটস্থ বাড়িগুলি খুঁজতে দূরত্বের অ্যালগরিদম ব্যবহার করুন। আপনি কি মনে করেন?
পল স্মিথ

@ পালস্মিথ আমি জানি না, তবে আমি দৃ strongly়ভাবে সন্দেহ করি এটি একটি স্থানিক ডিবিতে রয়েছে, একটি স্থানিক ডিবি সম্ভবত অভ্যন্তরীণভাবে কোনও গ্রাফের উপস্থাপনা ব্যবহার করবে (সম্ভবত আলোচিত একটি আর-ট্রি, তবে অন্যান্য বিকল্প রয়েছে) কীটি হচ্ছে প্রথম স্থানে ন্যূনতম বাউন্ডিং আয়তক্ষেত্রে কেবল আইটেমগুলি নির্বাচন করতে সক্ষম
জে.কে.

8

আপনি যখনই এই জাতীয় কোনও প্রশ্নের মুখোমুখি হন এবং সমস্যার ডোমেইনে কেবল আপনার দক্ষতা থাকে না তবে কয়েকটি জিনিস করা ভাল।

প্রথমে স্বীকার করুন যে আপনার এই সমস্যা ডোমেনে নির্দিষ্ট দক্ষতা নেই।

দ্বিতীয়ত , আপনি কীভাবে সমস্যার সমাধান করতে যাবেন তা ব্যাখ্যা করুন।

ভৌগলিক অনুসন্ধানের সাথে কাজ করার সময় আমার নির্দিষ্ট অভিজ্ঞতা না থাকলেও আমি আত্মবিশ্বাসী যে সমস্যার সমাধানের জন্য ভালভাবে নথিভুক্ত অ্যালগরিদম এবং বিদ্যমান প্রযুক্তি রয়েছে। আমার কাছে উপলব্ধ সাধারণ সমাধানগুলির জ্ঞান অর্জন করতে এবং প্রকল্পের প্রয়োজনীয়তার উপর ভিত্তি করে বাস্তবায়ন সম্পর্কে পছন্দ করতে আমি এগুলি অন্বেষণ করব।

তৃতীয় , সর্বদা এই জাতীয় সমস্যাগুলিকে তাদের মৌলিক উপাদানগুলিতে কমিয়ে দিন। আপনি জানেন যে কোনও মানচিত্রে অবস্থানগুলি দ্বিমাত্রিকভাবে বিতরণ করা হয়। আপনি জানেন যে আপনাকে নির্বিচারে x দেওয়া হলে y অন্য স্থানাঙ্ক থেকে প্রতিটি স্থানাঙ্কের দূরত্ব স্থানাঙ্ক করে একটি ত্রিভুজ গঠন করে এবং অজানা দৈর্ঘ্যের জন্য সমাধান করে গণনা করা হয়। আপনি আশাবাদী এও জেনে থাকবেন যে যদি আপনাকে কোনও বাউন্ডিং বাক্সের মধ্যে সমস্ত স্থানাঙ্কগুলি সন্ধান করতে বলা হয়, আপনি যে বাক্সটি সন্ধান করতে চান তার বিস্তৃতি গণনা করে এবং উভয় অক্ষের পাশাপাশি যুক্তির চেয়ে কম সহজ ব্যবহার করে এটি করতে পারেন।

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


সমস্ত ভাল পরামর্শ
জে কে।

@ বেন, আমি আপনার উল্লেখ করা সমস্ত জিনিসের সাথে অবশ্যই একমত হয়েছি, তবে সাক্ষাত্কারকারী অধিবেশন শুরুর আগে স্পষ্ট করে বলেছিলেন যে আপনি জানেন না বলে ঠিক আছে, আমি কেবল তার নির্দেশনা অনুসরণ করেছি এবং তাকে সামনেই বলেছি যে আমি জানি না: )
পল স্মিথ

4

এটি সম্ভবত সুস্পষ্ট, তবে অনেক অ্যাপ্লিকেশনগুলির জন্য দরিদ্র লোকটির ধীর সমাধান ভাল হতে পারে।

অক্ষাংশ এবং দ্রাঘিমাংশ সংরক্ষণ করে এমন একটি সম্পর্কিত ডেটাবেজে একটি টেবিল রাখুন। 20 মাইলের মধ্যে দ্রাঘিমাংশ এবং 20 মাইলের মধ্যে দ্রাঘিমাংশ থাকা সমস্ত অবস্থানের অনুসন্ধানগুলি ery এটি আপনাকে একটি সীমাবদ্ধ আয়তক্ষেত্রের আকার দেয় যা সবচেয়ে ছোট বাউন্ডিং আয়তক্ষেত্রের আকার দেয় যা আপনি সত্যিই অনুসন্ধান করতে চান ব্যাসার্ধের সাথে থাকে (এবং পাশাপাশি পৃথিবীর বক্রতাও উপেক্ষা করে)।

তারপরে আপনি যে সেটটি ফিরে পেয়েছেন (সূচকগুলি ব্যবহার করে কোনও ক্যোয়ারী দ্বারা) নিয়েছেন এবং দূরত্বের সঠিক গণনা ব্যবহার করে এটিকে ফিল্টার করুন।

সুতরাং, দক্ষ পারফরম্যান্স নয়, বিকাশের জন্য খুব দক্ষ। অনেকগুলি অ্যাপ্লিকেশনগুলির জন্য এটি আরও ভাল পছন্দ হতে পারে।


2

সম্ভবত সবচেয়ে সহজ উপায় হ'ল আপনার বাড়ির অবস্থানগুলি 2 ডি ল্যান্ডস্কেপে বিতরণ করে ধরে রেখে কোয়াডট্রি ব্যবহার করা । অনুসন্ধান মোটামুটি সোজা হওয়া উচিত।

আপনি যদি আপনার জিনিসগুলি সঞ্চয় করার জন্য একটি জিআইএস-সক্ষম সক্ষম আরডিবিএমএস ব্যবহার করেন, তবে আপনার সত্যিই এটি নিয়ে চিন্তা করার দরকার নেই need শীর্ষস্থানীয় খেলোয়াড়দের পারফরম্যান্স সম্পর্কে কিছু তথ্যের জন্য এই প্রশ্নটি দেখুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.