एक औंधा सूचकांक और एक सादे पुराने सूचकांक के बीच अंतर क्या है?


99

सॉफ्टवेयर इंजीनियरिंग में हम हर समय इंडेक्स बनाते हैं (उदाहरण के लिए, डेटाबेस में), लेकिन मैंने बहुत से लोगों को उल्टे सूचकांकों के बारे में बात करते सुना है। क्या दोनों के बीच मौलिक रूप से कुछ अलग है? वे एक ही जैसी आवाज करते हैं।



स्पष्ट करने के लिए, आप पूछ रहे हैं: एक सामान्य सूचकांक ( en.wikipedia.org/wiki/Index_%28database%29 ) के बारे में क्या अलग है जो उस तालिका में पहले से मौजूद डेटा के आधार पर एक तालिका को तोड़ता है? क्या वो सही है?
jwheron

3
@guidoism हर कोई उल्लेख करने में विफल रहा (हालांकि सामान्य रूप से उदाहरणों द्वारा इसका आंशिक रूप से वर्णन किया गया है और लवलेश बटन पर बहुत अधिक है) यह है कि उल्टे अनुक्रमित मूल डेटा को और अधिक कुशल बनाने के लिए (जैसे स्वैप कुंजी / डेटा विभिन्न परिप्रेक्ष्य को खोजने के लिए) तेज खोज एल्गोरिदम की अनुमति देने के लिए वर्णानुक्रम / संख्यात्मक रूप से आदेश देना), जबकि एक मानक सूचकांक डेटा को स्टोर करता है जैसा कि वह पाता है। "इनवर्ट" शब्द का "बैकवर्ड / फॉरवर्ड" संदर्भ और शाब्दिक अर्थ यहां लागू नहीं होता है, इसके बजाय यह डेटा के व्युत्क्रम को संदर्भित करता है जो हाथ में कार्य के लिए एक कुशल प्रारूप का उत्पादन करता है।
TheManWithNoName

जवाबों:


216

एक आम उपयोग है "... तेजी से पूर्ण-पाठ खोज की अनुमति देने के लिए।"

दो प्रकार दिशात्मकता को दर्शाते हैं । एक आपको सूचकांक के माध्यम से आगे ले जाता है , और दूसरा आपको सूचकांक के माध्यम से पीछे (उलटा) ले जाता है। बस। यहां कोई रहस्य नहीं है। अन्यथा दो प्रकार समान हैं, यह सिर्फ एक सवाल है कि आपके पास क्या जानकारी है , और इसके परिणामस्वरूप आप कौन सी जानकारी खोजने की कोशिश कर रहे हैं।

अपनी जांच को संबोधित करने के लिए, मुझे नहीं लगता कि वास्तव में यह जानने का एक तरीका है कि इसका उपयोग आज क्यों है। एकमात्र कारण यह परिभाषित करना महत्वपूर्ण है कि कौन सा है forwardऔर कौन सा ऐसा invertedहै ताकि हम सभी उनके बारे में बातचीत कर सकें, और हर कोई जानता है कि वह किस दिशा के बारे में कहता है। "बाएं" और "दाएं" शब्दों के बारे में सोचें: वे सापेक्ष हैं। जो कि कोई फर्क नहीं पड़ता है, सिवाय इसके कि सभी को सहमत होने की आवश्यकता है कि शब्दों में अर्थ के लिए कौन सा "बाएं" है और कौन सा "सही" है। अगर, एक संस्कृति के रूप में, हमने बाएं और दाएं फ्लिप करने का फैसला किया है, तो आपके पास एक ही मुद्दा होगा कि "राइट टर्न" बनाम "लेफ्ट टर्न" का क्या मतलब है क्योंकि अर्थ बदल गया था। हालाँकि, नामकरण मनमाना है, अर्थ पर।

अपनी टिप्पणी में, जहां आप पूछते हैं, "कृपया केवल शर्तों को परिभाषित न करें", आप बिंदु को याद कर रहे हैं, और मुझे लगता है कि आप सिर्फ शब्दों पर लटकाए जा रहे हैं जब उनके बीच बिल्कुल कोई अंतर नहीं है।


भविष्य के पाठकों के लाभ के लिए, अब मैं कई "फॉरवर्ड" और "इनवर्टेड" इंडेक्स उदाहरण प्रदान करूंगा:

उदाहरण 1: वेब खोज

यदि आप सोच रहे हैं कि सूचकांक का व्युत्क्रम कुछ ऐसा है जैसे गणित में किसी फ़ंक्शन का विलोम, जहां प्रतिलोम एक विशेष चीज है जिसका एक अलग रूप है, तो आपको गलत लगता है: यहाँ ऐसा नहीं है।

एक खोज इंजन में आपके पास दस्तावेजों (वेब ​​साइटों पर पृष्ठ) की एक सूची है, जहां आप कुछ कीवर्ड दर्ज करते हैं और परिणाम वापस प्राप्त करते हैं।

एक फॉरवर्ड इंडेक्स (या सिर्फ इंडेक्स) दस्तावेजों की सूची है , और उनमें कौन से शब्द दिखाई देते हैं। वेब खोज उदाहरण में, Google वेब को क्रॉल करता है, दस्तावेजों की सूची का निर्माण करता है, यह पता लगाता है कि प्रत्येक पृष्ठ में कौन से शब्द दिखाई देते हैं।

उल्टे सूचकांक है शब्दों की सूची , और दस्तावेज़ जिसमें वे दिखाई देते हैं। वेब खोज उदाहरण में, आप शब्दों की सूची (आपकी खोज क्वेरी) प्रदान करते हैं, और Google दस्तावेज़ों (खोज परिणाम लिंक) का उत्पादन करता है।

वे दोनों सूचकांक हैं - यह सिर्फ एक सवाल है कि आप किस दिशा में जा रहे हैं। आगे दस्तावेजों से है-> से-> शब्द, उल्टा शब्दों से है-> से-> दस्तावेजों से।

उदाहरण 2: डीएनएस

एक अन्य उदाहरण एक DNS लुकअप (जो एक होस्ट नाम लेता है, और एक IP पता देता है) और एक रिवर्स लुकअप (जो एक IP पता लेता है, और आपको होस्ट नाम देता है)।

उदाहरण 3: एक किताब

पुस्तक के पीछे का सूचकांक वास्तव में एक उल्टा सूचकांक है , जैसा कि ऊपर दिए गए उदाहरणों द्वारा परिभाषित किया गया है - शब्दों की एक सूची, और उन्हें पुस्तक में कहां खोजना है। एक पुस्तक में, सामग्री की तालिका आगे के सूचकांक की तरह है : यह उन दस्तावेजों (अध्यायों) की एक सूची है, जिसमें पुस्तक शामिल है, उन खंडों में शब्दों को सूचीबद्ध करने के बजाय, सामग्री की तालिका सिर्फ एक नाम / सामान्य विवरण देती है कि क्या है उन दस्तावेजों (अध्यायों) में निहित है।

उदाहरण 4: आपका सेल फोन

आगे सूचकांक अपने सेल फोन में अपने संपर्कों की सूची है, और जो फोन नंबर (सेल, घर, कार्यालय) उन संपर्कों के साथ जुड़े रहे है। उल्टे सूचकांक जिसे आप मैन्युअल एक फ़ोन नंबर दर्ज करने की अनुमति देता है, और जब आप हिट "डायल" आप व्यक्ति का नाम दिखाई, बल्कि संख्या की तुलना में, क्योंकि अपने फोन को फोन नंबर ले लिया है और आप इसके साथ जुड़े संपर्क पाया।


11
आपके समय के लिए शुक्रिया। लेकिन आपका जवाब अभी भी बेख़बर है। जैसा कि मैंने अपने भरपूर अनुरोध में उल्लेख किया है, मैं समझता हूं कि इसमें शामिल शब्दों का क्या अर्थ है और वे क्यों उत्पन्न होते हैं। मेरा प्रश्न था: "उल्टे अनुक्रमित नाम रखने वाले लोगों ने उन्हें उल्टा क्यों कहा, जब हमारे पास एक लंबी परंपरा है जो उन्हें सीधे सादे सूचकांक कहते हैं; उदाहरण के लिए, पुस्तकों के अंत में अनुक्रमित, जैसा कि आप बताते हैं, वास्तव में उल्टा है। ऐतिहासिक दृष्टिकोण से, पुस्तकों के अंत में अनुक्रमित वेब अनुक्रमित से पहले आया था। फिर परंपरा क्यों उलटी है? "। मेरा अनुमान है कि यह सिर्फ उन चीजों में से एक था, जो अभी हुआ ...
मानव

1
"मुझे नहीं लगता कि यह जानना संभव है कि शर्तों के उपयोग की ऐतिहासिक परीक्षा आयोजित किए बिना" - मुझे उम्मीद है कि कोई व्यक्ति इस तरह की ऐतिहासिक परीक्षा आयोजित करेगा और जवाब देगा। :-) क्योंकि यह "इंडेक्स" के सामान्य भाषा के अर्थ के विपरीत है, यह आश्चर्यजनक है। (एक संभावित उत्तर यह है कि जब "इनवर्टेड इंडेक्स" वाक्यांश पहली बार सोचा गया था, तो वाक्यांश "इंडेक्स" पहले से ही कुछ "इंडेक्स" के लिए किया जा रहा था "इन्वर्टेड इंडेक्स", "इन्वर्टेड राइट" इंडेक्स के वास्तविक जीवन का अर्थ है) "। उस स्थिति में, यह जानना उपयोगी होगा कि आगे" इंडेक्स "को अजीब नाम क्यों मिला।)
श्रीवत्सआर

2
@ जेफ्लंट सिर्फ इस बात पर आश्चर्य कर रहा है कि फॉरवर्ड इंडेक्सिंग का उपयोग क्यों किया जाना चाहिए। मैं यहाँ विशेष रूप से वेब खोज उदाहरण के बारे में बात कर रहा हूँ। इसलिए, यदि Google, अग्रगामी अनुक्रमण के भाग के रूप में, दस्तावेजों की सूची <-> उनमें शब्द देता है , और अंततः शब्दों की सूची का उपयोग करता है <-> उनकी खोज में दस्तावेजों की सूची, दस्तावेजों की सूची क्यों <-> शब्दों में उन्हें ? दूसरे शब्दों में, मेरा प्रश्न है: कोई यह नहीं पूछ सकता है कि किसी विशेष पृष्ठ (दस्तावेज़) में कौन से शब्द हैं या मुख्य रूप से यह पूछने जा रहा है कि पृष्ठों में वह कौन सा कीवर्ड खोज रहा है। फिर आगे अनुक्रमण क्यों करते हैं?
quickbrownfox

1
तो रिलेशनल डेटाबेस के संदर्भ में कोई उलटा सूचकांक नहीं है? या वे सूचकांक वास्तव में 'उल्टे सूचकांक' हैं। साहित्य में "सहमत" शब्दों के साथ समस्या कुछ अग्रदूतों या कोर द्वारा अज्ञानता / गलती / विचार-विमर्श है जो अलग-अलग समझौते शुरू करते हैं और समुदाय का हिस्सा उस नामकरण का पालन करते हैं। हर कोई कुछ समय बाद भ्रमित हो जाता है। मुझे यकीन है कि सॉफ्टवेयर में कई शब्द हैं जो मूल रूप से ए कहने के लिए थे, लेकिन अलग-अलग समुदाय जानबूझकर या गलती से इसे ए 'या बी के रूप में लेता है, वाक्यविन्यास बंद। यह अभी भी नए शिक्षार्थी से नरक को भ्रमित करता है।
nir

1
@ रोयली - मैंने वह श्वेत पत्र नहीं पढ़ा है। मुझे लगता है कि आप क्या पूछ रहे हैं, "क्या आप आगे के सूचकांक को अपडेट करते समय उल्टे सूचकांक को अपडेट करते हैं?" अगर आपका सवाल है, तो इसका जवाब हां है।
15

26

उन्होंने इसे सिर्फ इसलिए उलटा करार दिया क्योंकि पहले से ही एक इंडेक्स है। खोज इंजन का उदाहरण लें, यह दो भागों से बना है: पहला भाग "वेब क्रॉलर और पार्सर" है जो दस्तावेज़ से शब्द तक एक सूचकांक बनाता है, दूसरा भाग खोज डेटाबेस है जो शब्द से दस्तावेज़ में एक सूचकांक बनाता है। पहला सूचकांक मौजूद होने के कारण, हम स्वाभाविक रूप से दूसरे सूचकांक को औंधा सूचकांक कहते हैं।

यदि आप किसी पुस्तक के TOC (तालिका की सामग्री) को सूचकांक के रूप में नाम देते हैं, तो आपको पुस्तक के अंत में सूचकांक को "उल्टे सूचकांक" के रूप में कॉल करना चाहिए। या, दूसरे पक्ष में, आप टीओसी को उल्टे सूचकांक के रूप में कह सकते हैं।


6
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह इस सवाल का जवाब देता है कि हम एक इंडेक्स को "इनवर्टेड" क्यों कहते हैं, भले ही यह वही हो जो हर कोई "सामान्य इंडेक्स" के बारे में सोचता हो। एसक्यूएल बी-ट्री इंडेक्स में प्रत्येक शब्द के लिए सभी पंक्तियों ("दस्तावेजों") के लिए एक पॉइंटर होता है। वहां हम इसे "इंडेक्स" कहते हैं। लेकिन खोज इंजन में हम अचानक इस प्रक्रिया को "उलटा सूचकांक" कहते हैं। इसलिए नहीं कि यह मौलिक रूप से अलग है, बल्कि इसलिए कि हमने पहले एक "फॉरवर्ड इंडेक्स" (स्प्लिट टेक्स्ट) बनाया और फिर इसे "उलटा" किया। तो, सभी में, नाम "व्युत्क्रम" इसे बनाने की प्रक्रिया से आता है, न कि सूचकांक की अंतिम संरचना से।
फू बार

अंतर्दृष्टि के लिए @xeranic धन्यवाद। क्विक क्वेश्चन: क्या उल्टे इंडेक्स के बनने के बाद फॉरवर्ड इंडेक्स फाइल से एंट्रीज को हटाना व्यावहारिक है?
रॉय ली

3
मैं @FooBar से सहमत हूं। इस उत्तर को सही उत्तर के रूप में चुना जाना चाहिए। इसने उत्तर दिया कि क्यों हम एक नए शब्द का आविष्कार करते हैं, inverted index भले ही हमारे जीवन में सभी सामान्य सूचकांक पहले से ही उपयोग किए जाते हैं inverted
रयान लीयू

7

आमतौर पर इंडेक्स के बारे में बोलते समय, आप कुछ अतिरिक्त गणना या प्रक्रियाओं के संग्रहीत परिणामों का मतलब है जो आवेदन को गति देने के लिए किया गया है (जैसे MySQL या अन्य RDBMS MySQL डॉक्स से परामर्श करें )। अनुक्रमण का संबंध कैशिंग आदि से भी हो सकता है।

इन्वर्टेड इंडेक्स संरचना के साथ फाइल बनाता है जो मुख्य रूप से (फुलटेक्स्ट) खोज के लिए है।

उल्टे सूचकांक में दो मुख्य फाइलें हैं:

  • शब्दावली
  • आवृत्तियां

शब्दावली में पाठ से निकाले गए सामान्य शब्द हैं (निश्चित रूप से सर्वनाम जैसे ब्लैक लिस्ट शब्दों को छानने के बाद)। घटना फ़ाइल शब्दों और दस्तावेजों के बीच संबंध रखती है (शब्द doc1 और doc2 में प्रकट होता है, doc3 में नहीं)। इसे मैट्रिक्स के रूप में दर्शाया जाता है।

अनुक्रमण प्रक्रिया - उलटा सूचकांक

ऊपर दी गई छवि में वर्णित दो फाइलों को बनाने की प्रक्रिया को दिखाया गया है।

यदि आप इस समस्याग्रस्त व्यक्ति में आगे रुचि रखते हैं, तो मैं आपको रिकार्डो येट - आधुनिक सूचना पुनर्प्राप्ति ( अमेज़ॅन पर देखें ) द्वारा लिखित एक महान पुस्तक की सिफारिश कर सकता हूं - पृष्ठ 200 के बारे में मुझे लगता है।

आशा करता हूँ की ये काम करेगा :-)


यह एक बहुत अच्छा जवाब है क्योंकि यह बताता है कि वास्तव में एक औंधा सूचकांक क्या है। यह फॉरवर्ड इंडेक्सिंग और व्युत्क्रम इंडेक्सिंग के विचार से अलग हो जाता है, जो कि उस एल्गोरिथ्म से अलग होता है जिसका उपयोग खोज क्षमता के लिए किया जाता है, जो इंडेक्स बनाने और उलटा करने में सक्षम होता है।
186 बजे AN6U5

6

सामान्यता पहले से ही एक अग्रवर्ती और उल्टे सूचकांक के बीच आश्चर्यजनक रूप से भिन्न है, लेकिन इस सवाल के लिए कि एक को आगे सूचकांक और दूसरे को औंधा सूचकांक कहा जाता है, शायद इसीलिए उन्हें इस तरह से कहा जाता है ---

खोज इंजन क्रॉलिंग और इंडेक्सिंग (या किसी पुस्तक के लिए अनुक्रमणिका बनाना) का उदाहरण लेते हुए, वेब पेजों को क्रॉल करते समय (या पुस्तक को पढ़ते हुए) या आगे जाते हुए एक फॉरवर्ड इंडेक्स एक साथ बनाया जा सकता है । इसलिए यदि आपके पास क्रॉल करने के लिए 10 वेबपेज हैं (या किसी पुस्तक में 10 अध्याय) तो आप पहले वेबपेज को क्रॉल कर सकते हैं (पहले अध्याय को पढ़ें) और फिर वेबपेज में दिखाई देने वाले शब्दों की सूची बनाएं (अध्याय में दिखाई देने वाले शब्द) और जारी रखें अन्य वेबपृष्ठों (अन्य अध्यायों) के लिए यह प्रक्रिया तब तक जब तक आप सभी 10 वेबपृष्ठों (सभी 10 अध्यायों को पढ़ लें) को क्रॉल कर लेते हैं, आपका फ़ॉरवर्ड इंडेक्स प्रत्येक वेबपेज (अध्याय) के साथ पूरा होता है, जिसमें शब्दों की एक सूची होती है

लेकिन एक उल्टे सूचकांक को बनाने के लिए आपको सभी 10 वेबपृष्ठों (10 अध्यायों को पढ़ें) को क्रॉल करना होगा और फिर प्रत्येक दस्तावेज़ सूची में से प्रत्येक शब्द को लेना होगा और यह पता लगाना होगा कि कौन से दस्तावेज़ों में वह शब्द है। तो यह एक बार पीछे जाने जैसा है, जैसे आपने वेबपेजों को क्रॉल किया है (पुस्तक के अध्याय पढ़ें) । तो इसका उलटा सूचकांक कहा जाता है।

यह सिर्फ मेरी अटकलबाजी है।


5

सूचकांक कई प्रकार के होते हैं। उदाहरण के लिए, बी-ट्री, आर-ट्री, हैश ... विभिन्न उद्देश्यों के लिए, हमें सही सूचकांक चुनना होगा।

उलटा सूचकांक एक विशेष है। उलटा सूचकांक आमतौर पर पूर्ण पाठ खोज इंजन में उपयोग किया जाता है। उल्टे सूचकांक का उपयोग करें हम किसी दस्तावेज़ में एक शब्द का पता लगा सकते हैं (या दस्तावेज़ सेट) जितनी जल्दी हो सके। मेमोरी और सीपीयू की सीमा के बारे में सोचें, अन्य सूचकांक इस काम को पूरा नहीं कर सकते हैं।

अधिक विवरणों के लिए आप ल्यूसीन दस्तावेज़ पढ़ सकते हैं। यह एक ओपन सोर्स सर्च इंजन है। http://lucene.apache.org/java/docs/index.html


3

शब्द "इनवर्टेड वर्ड इंडेक्स" एक एकल-दस्तावेज़ के संबंध में परिवर्तन को संदर्भित करता है, जिसमें कई-दस्तावेज़ों की एक सूची वाले (या पहचानने वाले) प्रत्येक अद्वितीय शब्द के लिए कई-शब्द होते हैं। यह प्रभावी रूप से वन-टू-रिलेशनशिप (डॉक्स टू वर्ड्स) और इनवर्टिंग (या उलट) को प्रभावी रूप से ले रहा है, जैसे कि एक नया "इनवर्टेड" वन-टू-कई रिलेशनशिप अब मौजूद है, जो प्रत्येक अद्वितीय-शब्द है जो कई से संबंधित है- दस्तावेज़ (यानी, उस शब्द में सभी शामिल हैं)। यह वास्तव में मूल है कि सरल है, और "उल्टे सूचकांक" शब्द का उपयोग कंप्यूटर और इलेक्ट्रॉनिक उच्च गति अनुक्रमण से पहले ही उसी प्रकार के मैनुअल इंडेक्स का वर्णन करने के लिए किया गया था (हां, स्वीकार किया है, मैं एक पुराना, गीजर प्रोग्रामर हूं, लगभग ग्रेस हॉपर को एक "प्यारी युवा महिला" माना जाता है जब कोबोल एक चमकदार नई भाषा थी तो वापस आने के लिए उपयुक्त उम्र)। कृपया हमें अभी तक केवल गीज़र को न छोड़ें, क्योंकि हम कभी-कभी एक उपयोगी प्रदान कर सकते हैं, और संभवतः मूल्यवान, ऐतिहासिक tid-bit या दो - जब हमारी निजी रैम अभी भी काम कर रही है, वह है। [मुस्कराहट]


2

उल्टे अनुक्रमित, हमारे पास निम्न रूप हैं:

Word1-> डॉक्स की सूची यह क्रमबद्ध क्रम में होती है।

Word2-> डॉक्स की सूची यह (क्रमबद्ध क्रम) में होती है

यह सर्च इंजन क्वेरी प्रोसेसिंग के लिए बहुत उपयोगी है क्योंकि यह हमें डॉक्स को खोजने की अनुमति देता है जो कि शब्द में होता है।

इस उल्टे सूचकांक के निर्माण के लिए आप पर्यवेक्षित मशीन लेयरिंग का उपयोग कर सकते हैं।


6
यह मेरे लिए एक सूचकांक की तरह लगता है, इसके बारे में क्या उलटा है?
मार्गदर्शन

2
@guidoism एक उलटा सूचकांक एक अग्रेषित सूचकांक का विलोम है। एक अग्रेषित सूचकांक प्रत्येक डॉक्टर के लिए शब्दों की एक सूची संग्रहीत करता है। जैसे डॉक-> डब्ल्यू 1, डब्ल्यू 2
प्रोग्रामर

मुझे अभी भी फॉरवर्ड और इनवर्टेड इंडेक्स के बीच कोई अंतर नहीं मिला (यह कैसे काम करता है, इसका नामकरण बिट छोड़ दें)। मेरे लिए, एक सूचकांक की तरह दिखता है जो दस्तावेज़ आईडी के एक समूह के लिए एक क्षेत्र को मैप करता है। इस तरह से मैंने समझा कि कैसे ओर्टल बीट्री (अन्यथा फॉरवर्ड इंडेक्स के लिए) डेटा को व्यवस्थित करता है। मैं उल्टे सूचकांक के सिद्धांतों में कोई अंतर नहीं देखता। मैपिंग ए डॉक -> w1, w2, w3 खोज के संदर्भ में मेरे लिए एक अक्षम प्रस्ताव की तरह दिखता है। आश्चर्य है कि यह पहले स्थान पर क्यों है? वह मुझे वापस एक वर्ग में छोड़ देता है। :-)।
user1189332

प्रश्न
रॉय ली

0

एक और अंतर:

आगे के सूचकांक की तुलना में उल्टे सूचकांक के साथ अद्यतन अद्यतन महंगा है।

फॉरवर्ड इंडेक्स केवल संबंधित डॉक्यूमेंट इंडेक्स में बदलावों को दर्शाते हुए अपडेट को आसानी से हैंडल करता है, जबकि इन्वर्टेड इंडेक्स में, उसी बदलाव को इन्वर्टेड इंडेक्स में कई पदों पर प्रतिबिंबित करना होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.