आप यहां जो करने की कोशिश कर रहे हैं वह एक उलटा सूचकांक है।
प्रत्येक कॉलम के लिए, इसे "सेट" पर मैप करें। फिर, आप परिणाम प्राप्त करने के लिए सेट को प्रतिच्छेद कर सकते हैं।
तो, APPLE: RED ROUND FRUIT
निम्नलिखित प्रविष्टियों को मैप करेगा:
SADD p1:RED APPLE
SADD p2:ROUND APPLE
SADD p3:FRUIT APPLE
फिर, मान लें कि मैं * ROUND FRUIT
के लिए क्वेरी करना चाहता हूं , मैं करूँगा:
SINTER p2:ROUND p3:FRUIT
यह कमांड p2:ROUND
. में आइटम्स का इंटरसेक्शन ले रहा है सेट और p3:FRUIT
सेट। इससे वे सभी आइटम वापस आ जाएंगे जो ROUND
. हैं और FRUIT
, परवाह नहीं क्या p1
है।
कुछ अन्य उदाहरण:
SMEMBERS p1:GREEN
SINTER p1:RED p2:ROUND p3:FRUIT
SUNION p1:RED p1:GREEN
मेरा उपरोक्त उत्तर कुछ गणना शक्ति का उपयोग करने जा रहा है क्योंकि चौराहे का संचालन O(N*M)
. है . यहां ऐसा करने का एक तरीका है जो अधिक मेमोरी गहन है, लेकिन तेजी से पुनर्प्राप्ति होगी क्योंकि यह प्रभावी रूप से इंडेक्स को प्रीकंप्यूट करता है।
गुणों के प्रत्येक संयोजन के लिए, एक कुंजी बनाएं जो एक सेट को संगृहीत करे:
तो, APPLE: RED ROUND FRUIT
निम्नलिखित प्रविष्टियों को मैप करेगा:
SADD RED:ROUND:FRUIT APPLE
SADD :ROUND:FRUIT APPLE
SADD RED::FRUIT APPLE
SADD RED:ROUND: APPLE
SADD RED:: APPLE
SADD :ROUND: APPLE
SADD ::FRUIT APPLE
SADD ::: APPLE
फिर, क्वेरी करने के लिए, आप बस संबंधित कुंजी का उपयोग करते हैं। उदाहरण के लिए, * ROUND FRUIT
बस होगा
SMEMBERS :ROUND:FRUIT
जाहिर है, जब आपके पास कई आयाम होते हैं तो यह स्मृति के मामले में बिल्कुल भी अच्छा नहीं होता है, लेकिन परिणाम प्राप्त करना बेहद तेज़ होगा।