আপনি যখন শুরুটির পরিবর্তে কোনও স্ট্রিংয়ের মাঝখানে অনুসন্ধান করেন তখন তাকে কী বলা হয়?


19

আমি আমার সহকর্মী বিকাশকারীদের সাথে আরও ভাল যোগাযোগের জন্য আমার শব্দভাণ্ডারটি পালিশ করার চেষ্টা করছি। আমাদের সাইটে সাইটে বেশ কয়েকটি জায়গা রয়েছে যেখানে আমরা বিতর্ক করছি যদি শুরু থেকে 'running%'বনাম স্ট্রিংয়ের যে কোনও জায়গায় স্ট্রিংটি অনুসন্ধান করা উচিত '%running%

আমি মধ্যবর্তী অনুসন্ধানকে "ফাজি" বলে যাচ্ছি যা আমি বুঝতে পারছি যা অস্পষ্ট বলে ফাজি মানে "রান", "রানিং" [এসিক], "চালিত" [এসিক] শব্দের রূপ পরিবর্তন করা।

কোনও স্ট্রিংয়ের সূচনা এবং স্ট্রিংয়ের মাঝখানে অনুসন্ধান করার জন্য সঠিক পরিভাষাটি কী?


1
আমি সেই জায়গাগুলিতে কাজ করেছি যেগুলি দুটি বিকল্পের মধ্যে পার্থক্য করতে "বনগিন্স" সাথে "বনাম" ধারণ করে "ব্যবহার করেছে।
সলোমন রুটজকি

উত্তর:


24

এটিকে একটি "অ-অ্যাঙ্কার্ড অনুসন্ধান প্যাটার্ন" বলা হয় এবং এটি এসকিউএল-তে এটির মতো দেখাচ্ছে।

foo LIKE '%bar%'

যদি আপনার %উভয় পক্ষের অভাব থাকে তবে বলা হয় যে অনুসন্ধান প্যাটার্নটি যথাক্রমে স্ট্রিংয়ের শুরু বা শেষের দিকে অ্যাঙ্কর করে। এই লিঙ্গো এসেছে রেজেক্স ওয়ার্ল্ড থেকে।

foo LIKE 'bar%'

আপনি বলবেন, " bar%স্ট্রিংয়ের শুরুতে অ্যাঙ্কার্ড করা সন্ধানের প্যাটার্ন "।

তুলনার জন্য, একটি পিসিআরই অ্যাঙ্করড ^বা $টোকেন রয়েছে এবং এটি দেখতে ^barবা এর মতো দেখাচ্ছে bar$। পিসিআরইগুলির জন্য টোকেনগুলি সহ সুস্পষ্ট অ্যাঙ্করিং দরকার হয়, যেখানে এসকিউএল LIKEবিবৃতি সুস্পষ্টভাবে নোঙ্গর করা থাকে এবং %একটি "আন-অ্যাঙ্কার্ড অনুসন্ধান প্যাটার্ন" তৈরি করার জন্য সুস্পষ্ট প্রয়োজন ।

পার্শ্ব নোট হিসাবে, আপনি পোস্টগ্রেএসকিউএল এর মতো কিছু ব্যবহার করে ট্রিগারগুলির সাথে এই ধরণের এক্সপ্রেশনগুলিকে সূচক করতে পারেনpg_trgm


1

আমার মনে প্রথম যে বিষয়টি মনে আসে তা হ'ল "অ- সরগবল "। একটি সূচকযুক্ত ক্ষেত্রে নির্দিষ্ট স্ট্রিং, বা স্ট্রিংয়ের প্রথম অংশ অনুসন্ধান করা আপনাকে সন্ধান করতে দেয়। যদি আপনার অনুসন্ধানটি কোনও ওয়াইল্ডকার্ড দিয়ে শুরু হয়, আরডিবিএমএসকে পুরো সূচিটি স্ক্যান করতে হবে, কারণ যেগুলি অনুসন্ধানগুলি আপনার সন্ধানের সাথে মিলিত হয় সেগুলি মানগুলির সেটে যে কোনও জায়গায় উপস্থিত হতে পারে।

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


2
"আরডিবিএমএসকে পুরো সূচকটি স্ক্যান করতে হবে" এটি এতটা সত্য নয়। postgresql.org/docs/9.6/static/pgtrgm.html
ইভান ক্যারল

আমি মনে করি যে আনসার্জেবলটি এখানে আরও বেশ কয়েকটি সাধারণ শব্দ হতে পারে কারণ এটি অন্যান্য বেশ কয়েকটি কেস (উদাহরণস্বরূপ, একটি কলামে সঞ্চালিত কোনও ফাংশনের ফলাফল অনুসন্ধান করে) কভার করে covers
ডেভিড স্পিললেট

0

এটি আসলে আপনার প্রশ্ন নয়, তবে আপনার অস্পষ্টতার উদাহরণটি অসম্পূর্ণ।

  • অস্পষ্ট ধারালো, বাইনারিগুলির বিপরীত , যার অর্থ আপনার মিলের শতাংশ হতে পারে, উদাহরণস্বরূপ 'run'নির্ভুলতার জন্য একটি অস্পষ্ট অনুসন্ধান .5 'রান', 'রড' এবং আরও অনেক শব্দের অন্তর্ভুক্ত করবে। এসকিউএল अस्पष्ट অনুসন্ধান সমর্থন করে না , আপনার লুসিনের মতো অতিরিক্ত সিস্টেমের প্রয়োজন।
  • একটি ওয়াইল্ডকার্ড অনুসন্ধান জন্য 'run%'সবসময় 'runing' এবং 'runed' অন্তর্ভুক্ত করা হবে, এবং আপনি আলাদা করতে পারেন দিয়ে শুরু হয় এবং ধারণ করে ( '%run%'যেমন @ অন্তর্ভুক্ত করা 'থেকে বাঁচার উপায়') সলোমন Rutzky প্রস্তাব দেওয়া
  • তবে আপনি যদি পুরো শব্দগুলি সন্ধান করতে চান , উদাহরণস্বরূপ পাঠ্য ব্লকগুলিতে, আপনাকে পূর্ববর্তী বা পিছনের শ্বেত স্পেসটি নির্দেশ করতে হবে ' run '(অথবা ' run% ''ব্লে ব্লিং রানিং ব্ল' এবং 'ব্লে ব্লাড ব্ল্যাং' এর মতো আংশিক মিলগুলি অন্তর্ভুক্ত করতে হবে)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.