मुझे किसी विशेष श्रेणी से संबंधित यूआरएल (कुछ मिलियन लाइन) की एक बड़ी सूची को पहचानना है या नहीं। मेरे पास एक और सूची है जिसमें उप-स्ट्रिंग्स हैं जो यूआरएल में उपस्थित होने पर उस श्रेणी से संबंधित हैं। कहें, श्रेणी एस्ट्रिंग खोजों को करने के लिए एक तेज़ तरीका ढूंढ रहे हैं
चेक करने के लिए उप-तारों की सूची लगभग 10k ऐसे उप-स्ट्रिंग्स है। मैंने जो किया वह बस उप-स्ट्रिंग फ़ाइल में लाइन से लाइन पर गया था और मैच की तलाश में था और यदि पाया गया कि यूआरएल श्रेणी ए से संबंधित है तो मुझे परीक्षणों में पाया गया कि यह समय लेने वाला था।
मैं कंप्यूटर विज्ञान छात्र नहीं हूं इसलिए एल्गोरिदम अनुकूलित करने के बारे में ज्यादा जानकारी नहीं है। लेकिन क्या यह तेजी से बनाने का कोई तरीका है? बस साधारण विचार। प्रोग्रामिंग भाषा एक बड़ा मुद्दा नहीं है लेकिन जावा या पर्ल बेहतर होगा।
मैच के लिए उप-स्ट्रिंग्स की सूची अधिक नहीं बदलेगी। हालांकि मुझे यूआरएल की विभिन्न सूचियां मिलेंगी, इसलिए इसे हर बार चलाने के लिए इसे चलाने के लिए है। बाधा यूआरएल प्रतीत होती है क्योंकि वे बहुत लंबे समय तक मिल सकते हैं।
यूआरएलएस को इंडेक्स करने के लिए आप कुछ सूचना पुनर्प्राप्ति प्रणाली (यानी लुसीन - जावा में) का उपयोग कर सकते हैं, और फिर स्ट्रिंग के लिए खोज करेंगे, इंडेक्सिंग समय लेने वाला हो, लेकिन यह प्रत्येक "क्वेरी" के लिए समय बचाएगा - पूरी सूची में फिर से नहीं चल रहा है। – amit
10k बार, कहते हैं, 10 मिलियन क्या है, 100 अरब? हाँ, भाषा के बावजूद इसमें कुछ समय लगेगा। अगर श्रेणी ए में कुछ है, तो इसका मतलब यह है कि वे किसी अन्य श्रेणी में नहीं हो सकते हैं?यदि हां, तो आप –
श्रेणी में असाइन की गई बड़ी सूची से सब कुछ हटा सकते हैं, सबस्ट्रिंग्स की सूची निरंतर है, इसमें लंबे समय तक कोई कारण नहीं है, मेरा उत्तर देखें कि सूची की लंबाई केवल उस आकार को प्रभावित करती है ऑटोमाटा के लिए मेमोरी और यहां तक कि शायद यह छोटा होगा – Asaf