कैसंड्रा में पूर्ण-पाठ खोज;कैसंड्रा पूर्ण-पाठ खोज
मैं कैसंद्रा के लिए बिल्कुल नया हूं, और इसे और अधिक सही ढंग से समझना चाहता हूं। मैं कैसंद्रा में एक पूर्ण-पाठ खोज करने का प्रयास कर रहा हूं, लेकिन कुछ शोध के बाद मुझे पता चला है कि इसके लिए "सरल" दृष्टिकोण नहीं है .. और मैं कह सकता हूं क्योंकि Google के पहले पृष्ठ ने नहीं कहा है कुछ भी ज्यादा
तो मैं इसके बजाय अब समझने की कोशिश कर रहा हूं, यहां सबसे अच्छा तरीका क्या है .. इस तरह के मुझे कैसंड्रा के बारे में अब तक जो कुछ सीखा है, उसके आधार पर मेरी अपनी धारणाएं करने के लिए नेतृत्व करें, जो इन पर आधारित है दो प्रधानाचार्य; ए) डेटा के बजाए, अपने प्रश्नों के आधार पर अपनी टेबल तैयार करें, और बी) अधिक डेटा एक अच्छी बात है, जब तक इसका उपयोग ठीक से किया जा रहा हो।
ऐसा कहा जा रहा है कि, मैं कुछ ऐसे समाधानों के साथ आया हूं जिन्हें मैं साझा करना चाहता हूं, और यह भी पूछें कि अगर किसी के पास कोई बेहतर विचार है, तो कृपया मुझे कुछ भी अनुचित/निष्पक्ष करने से पहले इसे भरें ।
पहले समाधान: एक स्तंभ परिवार (CF), दो प्राथमिक कुंजी के साथ और एक सूचकांक की तरह इतना बनाएँ:
CREATE TABLE "FullTextSearch" (
"PartialText" text,
"TargetIdentifier" uuid,
"CompleteText" text,
"Type" int,
PRIMARY KEY ("PartialText","TargetIdentifier")
);
CREATE INDEX IX_FullTextSearch_Type "keyspace"."FullTextSearch" ("Type");
उपरोक्त तालिका के साथ, मैं पाठ के लिए पंक्तियां सम्मिलित करने की आवश्यकता होगी "नमस्ते दुनिया" इस प्रकार है:
BATCH APPLY;
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("H",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("He",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Hel",000000000-0000-0000-0000-000000000,"Hello World",1);
.....
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Hello Wor",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Hello Worl",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Hello World",000000000-0000-0000-0000-000000000,"Hello World",1);
.....
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Wor",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("Worl",000000000-0000-0000-0000-000000000,"Hello World",1);
INSERT INTO "FullTextSearch" ("PartialText","TargetIdentifier","CompleteText","Type") VALUES ("World",000000000-0000-0000-0000-000000000,"Hello World",1);
END BATCH;
असल में, इसके बाद के संस्करण "ओ डब्ल्यू%%", "नमस्ते%", "Worl%" निम्न वाइल्डकार्ड/partialtext को पूरा करेगा; हालांकि यह इस तरह "हैलो" के लिए "% ell%" है, जो मैं ठीक अब के लिए के बारे में महसूस कर सकते हैं के रूप में आंशिक शब्द को संतुष्ट नहीं करेगा ..... (ओसीडी sorta यहाँ में लात मारता है)
यह दृष्टिकोण एक तरह से बेकार है मेरे लिए क्योंकि अब मुझे "targetIdentifier" पर सहेजने/नाम परिवर्तन होने पर किसी भी समय हटाना/दोबारा डालना होगा;
दूसरा समाधान, इस बार केवल व्यापक कॉलम का उपयोग करने के समान ही होगा; की तरह एक खोज कुछ दौरान
CREATE TABLE "FullTextSearch" (
"TargetIdentifier" uuid,
"Type" int,
"CompleteText" text,
PRIMARY KEY("TargetIdentifier")
);
और अब: जहां मेज कैसा लग सकता है
SELECT * FROM "FullTextSearch" WHERE "He" = 1;
ताकि यदि स्तंभ मौजूद है, संबंधित पंक्तियों लौटा दिए जाते हैं;
तीसरा समाधान:
SELECT * FROM "FullTextSearch" WHERE "PartialTexts"['He'] = 1;
फिर भी: समान ऊपर एक, बजाय व्यापक कॉलम हम इस तरह के आंशिक ग्रंथों के लिए नक्शे के रूप में एक सेट स्तंभ का उपयोग करें का उपयोग करने का केवल इस बार, और इस तरह एक प्रश्न प्रदर्शन करने के लिए , मैं सभी विचारों से बाहर हूं, देर हो चुकी है, और मैं केवल एक महान प्रतिक्रिया के लिए उम्मीद कर सकता हूं! कृपया, मुझे बताएं कि मुझे यहां क्या करना चाहिए ... क्या मैं भी सही रास्ते पर हूं?