GroupDocs.Search for Java में शार्ड्स को ऑप्टिमाइज़ करने का तरीका: एक व्यापक गाइड
प्रभावी दस्तावेज़ खोज उन डेवलपर्स और व्यवसायों के लिए आवश्यक है जो बड़े डेटा सेट्स का प्रबंधन करते हैं या तेज़ आंतरिक पुनर्प्राप्ति की आवश्यकता रखते हैं। इस ट्यूटोरियल में आप how to configure search network java सीखेंगे, दस्तावेज़ों को इंडेक्स और क्वेरी कैसे करें, और optimize shards के सटीक चरणों को जानेंगे ताकि सर्वोत्तम प्रदर्शन प्राप्त हो सके। हम वास्तविक दुनिया के उपयोग मामलों, सामान्य pitfalls, और व्यावहारिक टिप्स को भी कवर करेंगे ताकि आपके सर्च नोड्स सुचारू रूप से चलें।
त्वरित उत्तर
- What is shard optimization? यह इंडेक्स डेटा को पुनः व्यवस्थित करता है ताकि क्वेरीज़ तेज़ हों और स्टोरेज ओवरहेड कम हो।
- How to configure a search network? एक बेस डायरेक्टरी और पोर्ट निर्धारित करें, फिर प्रदान किए गए API का उपयोग करके नोड्स को डिप्लॉय करें।
- How to perform text search? अपने क्वेरी स्ट्रिंग के साथ
TextSearchInNetwork.searchAllका उपयोग करें। - How to index documents in Java?
IndexingDocuments.addDirectoriesके साथ दस्तावेज़ डायरेक्टरीज़ को मास्टर नोड में जोड़ें। - How to handle port conflicts? अपने मशीन पर एक अनउपयोगी पोर्ट पर
basePortवेरिएबल को बदलें।
सर्च नेटवर्क कैसे कॉन्फ़िगर करें
Configuration वह सभी सेटिंग्स संग्रहीत करता है जो GroupDocs.Search नेटवर्क लॉन्च करने के लिए आवश्यक हैं, जैसे इंडेक्स फ़ोल्डर स्थान और कम्युनिकेशन पोर्ट।SearchNetwork नोड्स को व्यवस्थित करता है, इंडेक्सिंग और क्वेरी वितरण को संभालता है।
अपनी सर्च कॉन्फ़िगरेशन लोड करें, दस्तावेज़ बेस पाथ सेट करें, एक फ्री पोर्ट चुनें, और नेटवर्क शुरू करें—सिर्फ कुछ कोड लाइनों में। यह सीधा उत्तर पूरे प्रक्रिया को 70 शब्दों से कम में समझाता है: Create a Configuration object, set basePath and basePort, then call SearchNetwork.start(configuration)। नेटवर्क स्वचालित रूप से एक मास्टर नोड और आवश्यक वर्कर नोड्स को स्पिन अप करेगा, जो इंडेक्सिंग अनुरोधों को स्वीकार करने के लिए तैयार होंगे।
परिभाषा एंकर
Configuration वह मुख्य क्लास है जो GroupDocs.Search नेटवर्क लॉन्च करने के लिए आवश्यक सभी सेटिंग्स संग्रहीत करता है, जैसे इंडेक्स फ़ोल्डर स्थान और कम्युनिकेशन पोर्ट।
डरावनी “port already in use” त्रुटि से बचने के लिए, नेटवर्क को इनिशियलाइज़ करने से पहले पहले सुनिश्चित करें कि चयनित पोर्ट फ्री है (जैसे netstat या एक साधारण सॉकेट टेस्ट का उपयोग करके)।
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
जावा में दस्तावेज़ इंडेक्स कैसे करें
IndexingDocuments एक यूटिलिटी क्लास है जो कई डायरेक्टरीज़ को सर्च नोड में जोड़ना आसान बनाती है और इंडेक्सिंग पाइपलाइन को ट्रिगर करती है।
अपने दस्तावेज़ फ़ोल्डर को मास्टर नोड में जोड़ें, फिर इंडेक्सर को उन्हें क्रॉल करने दें। सीधा उत्तर: IndexingDocuments.addDirectories(masterNode, List.of("C:/Docs", "C:/MoreDocs")) को कॉल करें और फिर masterNode.index() को इनवोक करें; इंजन आपके द्वारा प्रदान किए गए प्रत्येक फ़ोल्डर के लिए सर्चेबल शार्ड्स बनाएगा। यह तरीका क्षैतिज रूप से स्केल करता है—और नोड्स जोड़ें, और वही मेथड वर्कलोड को स्वचालित रूप से वितरित करता है।
परिभाषा एंकर
IndexingDocuments एक यूटिलिटी क्लास है जो कई डायरेक्टरीज़ को सर्च नोड में जोड़ना आसान बनाती है और इंडेक्सिंग पाइपलाइन को ट्रिगर करती है।
String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Adjust if necessary
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
टेक्स्ट सर्च कैसे करें
TextSearchInNetwork स्थैतिक हेल्पर मेथड्स प्रदान करता है जो नेटवर्क के प्रत्येक नोड को टेक्स्ट क्वेरी ब्रॉडकास्ट करता है और परिणामों को एकत्रित करता है।SearchResult एक मेल खाते दस्तावेज़ की ID, स्निपेट, और रिलिवेंस स्कोर को समेटे रहता है।
सभी शार्ड्स पर एक ही मेथड कॉल के साथ क्वेरी चलाएँ। सीधा उत्तर: TextSearchInNetwork.searchAll("your query", searchNetwork) का उपयोग करें; यह मेथड SearchResult ऑब्जेक्ट्स का संग्रह लौटाता है जिसमें दस्तावेज़ IDs, स्निपेट्स, और रिलिवेंस स्कोर होते हैं। आप अतिरिक्त कोड लिखे बिना भाषा, फ़ाइल प्रकार, या कस्टम मेटाडाटा द्वारा परिणामों को आगे फ़िल्टर कर सकते हैं।
परिभाषा एंकर
TextSearchInNetwork स्थैतिक हेल्पर मेथड्स प्रदान करता है जो नेटवर्क के प्रत्येक नोड को टेक्स्ट क्वेरी ब्रॉडकास्ट करता है और परिणामों को एकत्रित करता है।
String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Change this if you encounter a network port issue
पोर्ट कॉन्फ्लिक्ट कैसे संभालें
यदि डिफ़ॉल्ट पोर्ट (49132) व्यस्त है, तो बस एक अन्य फ्री पोर्ट चुनें और नेटवर्क शुरू करने से पहले basePort फ़ील्ड को अपडेट करें। सीधा उत्तर: int basePort = 49132; को 49133 जैसे अनउपयोगी मान में बदलें, पुनः बनाएं, और रीस्टार्ट करें; नेटवर्क नए पोर्ट से बाइंड हो जाएगा बिना मौजूदा नोड्स को प्रभावित किए।
प्रो टिप: एक छोटा कॉन्फ़िगरेशन फ़ाइल रखें (जैसे search-config.properties) ताकि आप पोर्ट को बिना री‑कम्पाइल किए बदल सकें।
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
पूर्वापेक्षाएँ
शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित पूर्वापेक्षाएँ मौजूद हैं:
आवश्यक लाइब्रेरीज़, संस्करण, और निर्भरताएँ
इस समाधान को लागू करने के लिए, Maven का उपयोग करके GroupDocs.Search लाइब्रेरी को शामिल करें, अपने pom.xml फ़ाइल में निम्नलिखित कॉन्फ़िगरेशन जोड़कर:
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0];
वैकल्पिक रूप से, नवीनतम संस्करण यहाँ से डाउनलोड करें: GroupDocs.Search for Java releases।
पर्यावरण सेटअप आवश्यकताएँ
- Java Development Kit (JDK) 8 या बाद का।
- नेटवर्क अनुमतियाँ जो चयनित
basePortसे बाइंड करने की अनुमति देती हैं। - इंडेक्स फ़ाइलों के लिए पर्याप्त डिस्क स्पेस (प्रत्येक शार्ड लगभग 1,000 दस्तावेज़ों पर ~10 MB ले सकता है)।
ज्ञान पूर्वापेक्षाएँ
Java, ऑब्जेक्ट‑ओरिएंटेड प्रोग्रामिंग, और एक्सेप्शन हैंडलिंग की बुनियादी समझ आपको उदाहरणों को सहजता से फॉलो करने में मदद करेगी।
GroupDocs.Search for Java सेटअप करना
अपने प्रोजेक्ट में GroupDocs.Search का उपयोग शुरू करने के लिए, इन चरणों का पालन करें:
- Add the Dependency: जैसा ऊपर दिखाया गया है, आवश्यक Maven निर्भरता को अपने प्रोजेक्ट में जोड़ें या रिलीज़ पेज से सीधे डाउनलोड करें।
- License Acquisition:
- Free trial – कोई लाइसेंस की नहीं चाहिए, लेकिन उपयोग प्रति दिन 500 दस्तावेज़ तक सीमित है।
- Temporary license – GroupDocs Temporary License से 30‑दिन का ट्रायल की अनुरोध करें।
- Full license – अनलिमिटेड एक्सेस और प्रायोरिटी सपोर्ट के लिए प्रोडक्शन लाइसेंस खरीदें।
- Basic Initialization and Setup:
Configurationक्लास का उपयोग करके कॉन्फ़िगरेशन इनिशियलाइज़ करें, दस्तावेज़ों के लिए बेस पाथ सेट करें और पोर्ट नंबर निर्दिष्ट करें:
SearchNetworkNodeEvents.subscribe(masterNode);
इम्प्लीमेंटेशन गाइड
अब चलिए GroupDocs.Search Java का उपयोग करके प्रमुख फीचर्स की इम्प्लीमेंटेशन को देखें।
फीचर: सर्च नेटवर्क कॉन्फ़िगर करना
सारांश: सर्च नेटवर्क सेटअप करने में आपके दस्तावेज़ डायरेक्टरी को परिभाषित करना और नोड्स के बीच संचार के लिए एक विशिष्ट पोर्ट कॉन्फ़िगर करना शामिल है।
चरण 1: दस्तावेज़ डायरेक्टरीज़ और पोर्ट परिभाषित करें
DocumentDirectory एक सरल होल्डर है जो उस फ़ोल्डर के एब्सोल्यूट पाथ को रखता है जिसे आप इंडेक्स करना चाहते हैं। कॉन्फ़िगरेशन में एक या अधिक पाथ प्रदान करें।
IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath");
IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2");
चरण 2: सर्च नेटवर्क कॉन्फ़िगर करें
परिभाषित पाथ्स का उपयोग करके कॉन्फ़िगरेशन ऑब्जेक्ट बनाएं:
TextSearchInNetwork.searchAll(masterNode, "ligula", false);
फीचर: सर्च नेटवर्क नोड्स को डिप्लॉय करना
सारांश: नोड्स को डिप्लॉय करें ताकि आपके नेटवर्क में दस्तावेज़ खोजें कुशलता से संभाली जा सकें।
चरण 1: कॉन्फ़िगरेशन का उपयोग करके नोड्स डिप्लॉय करें
सर्च नेटवर्क नोड्स को डिप्लॉय करें और केंद्रीकृत प्रबंधन के लिए मास्टर नोड की पहचान करें:
public static void optimizeShards(SearchNetworkNode node) {
Indexer indexer = node.getIndexer();
OptimizeOptions options = new OptimizeOptions();
indexer.optimize(options);
}
optimizeShards(masterNode);
// Perform a second text search to observe optimization effects
TextSearchInNetwork.searchAll(masterNode, "ligula", false);
फीचर: नेटवर्क नोड इवेंट्स की सदस्यता लेना
सारांश: महत्वपूर्ण बदलावों या क्रियाओं की सूचना देने वाले इवेंट्स की सदस्यता लेकर अपने सर्च नेटवर्क की निगरानी करें।
चरण 1: मास्टर नोड इवेंट्स की सदस्यता लें
SearchNetworkEventListener आपको इंडेक्सिंग पूर्णता, नोड फेल्योर, या शार्ड ऑप्टिमाइज़ेशन पर प्रतिक्रिया देने की अनुमति देता है।
CODE_BLOCK_PLACEHOLDER_9_END
फीचर: नेटवर्क नोड्स में दस्तावेज़ इंडेक्स करना
सारांश: कुशल खोजों के लिए दस्तावेज़ों वाले डायरेक्टरीज़ को इंडेक्सिंग प्रक्रिया में जोड़ें।
चरण 1: इंडेक्सिंग प्रक्रिया में दस्तावेज़ डायरेक्टरीज़ जोड़ें
फ़ोल्डर पाथ्स की सूची को मास्टर नोड को पास करें; इंजन प्रत्येक फ़ोल्डर के लिए एक अलग शार्ड बनाएगा, जिससे समानांतर क्वेरी निष्पादन सक्षम होगा।
CODE_BLOCK_PLACEHOLDER_10_END
फीचर: नेटवर्क नोड्स में टेक्स्ट सर्च
सारांश: आपके सर्च नेटवर्क के भीतर सभी इंडेक्स किए गए दस्तावेज़ों पर टेक्स्ट सर्च निष्पादित करें।
चरण 1: टेक्स्ट सर्च निष्पादित करें
क्वेरी चलाने और रिलिवेंस स्कोर के साथ मिलते दस्तावेज़ प्राप्त करने के लिए स्थैतिक हेल्पर को इनवोक करें।
CODE_BLOCK_PLACEHOLDER_11_END
फीचर: शार्ड्स को ऑप्टिमाइज़ करना
सारांश: आपके सर्च नेटवर्क नोड के इंडेक्सर के भीतर शार्ड्स को ऑप्टिमाइज़ करके प्रदर्शन बढ़ाएँ।
चरण 1: इंडेक्सर शार्ड्स को ऑप्टिमाइज़ करें
शार्ड्स को ऑप्टिमाइज़ करें ताकि सर्च दक्षता बढ़े (यहीं पर how to optimize shards वास्तव में महत्वपूर्ण है):
CODE_BLOCK_PLACEHOLDER_12_END
व्यावहारिक अनुप्रयोग
GroupDocs.Search for Java को विभिन्न वास्तविक दुनिया के परिदृश्यों में लागू किया जा सकता है, जहाँ प्रत्येक शार्ड ऑप्टिमाइज़ेशन से लाभान्वित होता है:
- Enterprise Document Management – शार्ड ऑप्टिमाइज़ेशन के बाद 10 TB+ आर्काइव को सब‑सेकंड क्वेरी टाइम के साथ संभालता है।
- E‑commerce Platforms – 1 million SKU पर प्रोडक्ट सर्च को सक्षम करता है, शार्ड्स ऑप्टिमाइज़ होने पर लेटेंसी को 45 % तक कम करता है।
- Legal Firms – 200 GB रिपॉज़िटरी से केस फ़ाइलें 200 ms से कम में प्राप्त करता है।
- Library Systems – 500 k डिजिटल बुक्स के कैटलॉग सर्च को कुशल मेमोरी उपयोग के साथ सपोर्ट करता है।
- Content Management Systems (CMS) – 2 million से अधिक पेज वाले मल्टी‑साइट डिप्लॉयमेंट्स के लिए त्वरित कंटेंट डिस्कवरी सक्षम करता है।
प्रदर्शन विचार
अपने GroupDocs.Search इम्प्लीमेंटेशन के इष्टतम प्रदर्शन को सुनिश्चित करने के लिए:
- Regularly optimize shards – हर 10 GB नए डेटा के बाद
optimizeShards()चलाने से क्वेरी रिस्पॉन्स टाइम 30‑50 % तक घटता है। - Monitor memory usage – JVM हीप को फिजिकल RAM के 75 % से नीचे रखें; बड़े इंडेक्स के लिए G1GC सक्षम करें।
- Use incremental indexing – पूर्ण री‑इंडेक्सिंग से बचने के लिए केवल बदले हुए फ़ाइलें जोड़ें।
- Leverage multi‑node scaling – शार्ड्स वितरित करने के लिए वर्कर नोड्स जोड़ें; प्रत्येक अतिरिक्त नोड रीड‑हेवी वर्कलोड्स के लिए थ्रूपुट को लगभग 20 % तक सुधार सकता है।
सामान्य समस्याएँ और समाधान
| समस्या | लक्षण | समाधान |
|---|---|---|
| स्टार्टअप पर पोर्ट कॉन्फ्लिक्ट | java.net.BindException: Address already in use | basePort को अनउपयोगी मान में बदलें; netstat -ano से सत्यापित करें। |
| ऑप्टिमाइज़ेशन के दौरान मेमोरी समाप्ति त्रुटियाँ | java.lang.OutOfMemoryError: Java heap space | JVM -Xmx फ़्लैग बढ़ाएँ या अधिक RAM वाले समर्पित नोड पर ऑप्टिमाइज़ेशन चलाएँ। |
| सर्च परिणामों में दस्तावेज़ गायब | इंडेक्सिंग के बाद कोई परिणाम नहीं मिला | IndexingDocuments.addDirectories के माध्यम से डायरेक्टरी सही ढंग से जोड़ी गई हैं और masterNode.index() बिना एक्सेप्शन के पूरा हुआ है, यह सुनिश्चित करें। |
| बड़े पैमाने पर डिलीट के बाद पुरानी शार्ड्स | डिलीट की गई फ़ाइलें अभी भी दिखाई देती हैं | सेगमेंट्स को मर्ज करने और टॉम्बस्टोन्स को हटाने के लिए optimizeShards() चलाएँ। |
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: शार्ड ऑप्टिमाइज़ेशन क्वेरी गति को कैसे प्रभावित करता है?
उत्तर: शार्ड्स को ऑप्टिमाइज़ करने से इंडेक्स संकुचित होता है, डिस्क I/O कम होता है, और आमतौर पर बड़े डेटा सेट्स के लिए 30‑50 % तेज़ क्वेरी रिस्पॉन्स मिलते हैं।
प्रश्न: क्या लाइव नोड पर optimizeShards चलाना सुरक्षित है?
उत्तर: हाँ, यह ऑपरेशन बिना डाउntime के चलाने के लिए डिज़ाइन किया गया है, लेकिन 20 GB से बड़े इंडेक्स के लिए कम ट्रैफ़िक वाले समय पर शेड्यूल करना सुझाया जाता है।
प्रश्न: क्या मैं OptimizeOptions को कस्टमाइज़ कर सकता हूँ?
उत्तर: बिल्कुल। आप maxSegmentSize या mergeFactor जैसे पैरामीटर सेट करके ऑप्टिमाइज़ेशन प्रक्रिया को फाइन‑ट्यून कर सकते हैं।
प्रश्न: ऑप्टिमाइज़ेशन के दौरान यदि IOException आती है तो क्या करें?
उत्तर: फ़ाइल सिस्टम अनुमतियों की जाँच करें, पर्याप्त फ्री डिस्क स्पेस सुनिश्चित करें, और पुष्टि करें कि कोई अन्य प्रोसेस इंडेक्स फ़ाइलों को लॉक नहीं कर रहा है।
प्रश्न: क्या शार्ड्स को ऑप्टिमाइज़ करने से डिलीट किए गए दस्तावेज़ों की जगह भी मुक्त होती है?
उत्तर: हाँ, ऑप्टिमाइज़र सेगमेंट्स को मर्ज करता है और टॉम्बस्टोन्स को हटाता है, जिससे डिलीट किए गए दस्तावेज़ों द्वारा घिरी जगह मुक्त होती है।
निष्कर्ष
इस व्यापक गाइड का पालन करके, अब आप जानते हैं कि configure search network java कैसे करें, दस्तावेज़ों को इंडेक्स करें, टेक्स्ट क्वेरी चलाएँ, और सबसे महत्वपूर्ण, optimize shards करके अपनी सर्च प्रदर्शन को तेज़ रखें। इन पैटर्न को किसी भी Java‑आधारित एंटरप्राइज़ सर्च समाधान में लागू करें, और आप लेटेंसी, स्केलेबिलिटी, और रिसोर्स उपयोग में मापनीय सुधार देखेंगे। अगले कदमों के लिए, कस्टम एनालाइज़र, फ़ैसिटेड सर्च, और क्लाउड स्टोरेज प्रोवाइडर्स के साथ इंटीग्रेशन जैसी उन्नत सुविधाओं का अन्वेषण करें।
Last Updated: 2026-05-17
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs