Java में GroupDocs.Search नेटवर्क को कॉन्फ़िगर कैसे करें – सर्च को बूस्ट करें
आधुनिक, डेटा‑गहन अनुप्रयोगों में, GroupDocs को सही तरीके से कॉन्फ़िगर करना सही ढंग से तेज़, प्रासंगिक खोज परिणाम प्रदान करने की नींव है जो बड़े दस्तावेज़ रिपॉज़िटरीज़ में वितरित होते हैं। चाहे आप एंटरप्राइज़ पोर्टल, नॉलेज‑बेस, या प्रोडक्ट कैटलॉग बना रहे हों, एक अच्छी तरह ट्यून किया गया GroupDocs.Search नेटवर्क आपको क्षैतिज रूप से स्केल करने, समानार्थी शब्द लॉजिक जोड़ने, और लेटेंसी को नियंत्रित रखने की सुविधा देता है। इस ट्यूटोरियल में हम Java का उपयोग करके GroupDocs.Search नेटवर्क को सेट अप, डिप्लॉय और फाइन‑ट्यून करने के सभी चरणों से गुजरेंगे, साथ ही इंडेक्स में समानार्थी शब्द जोड़ने और नोड जीवनचक्र को संभालने के लिए व्यावहारिक सलाह देंगे।
त्वरित उत्तर
- GroupDocs.Search नेटवर्क को कॉन्फ़िगर करने का मुख्य लाभ क्या है? यह वितरित इंडेक्सिंग और क्वेरींग को सक्षम करता है, जिससे प्रदर्शन और स्केलेबिलिटी में सुधार होता है।
- क्या मुझे उदाहरण चलाने के लिए लाइसेंस चाहिए? विकास के लिए एक फ्री ट्रायल काम करता है; उत्पादन के लिए एक व्यावसायिक लाइसेंस आवश्यक है।
- क्या इंडेक्स को पुनः बनाये बिना समानार्थी शब्द जोड़े जा सकते हैं? हाँ—रनटाइम पर समानार्थी शब्द शब्दकोश का उपयोग करके इंडेक्स में समानार्थी शब्द जोड़ें।
- मैं कितने नोड्स डिप्लॉय कर सकता हूँ? आप अपने इन्फ्रास्ट्रक्चर की अनुमति के अनुसार जितने चाहें उतने नोड्स डिप्लॉय कर सकते हैं; प्रत्येक नोड अपना पोर्ट पर चलता है।
- कौन सा Java संस्करण आवश्यक है? JDK 8 या नया समर्थित है, और JDK 21 तक पूरी संगतता है।
GroupDocs.Search नेटवर्क को कॉन्फ़िगर करना क्या है?
GroupDocs.Search नेटवर्क एक JVM प्रक्रियाओं का संग्रह है जो साझा दस्तावेज़ सेट को इंडेक्स और क्वेरी करने के लिए सहयोग करती हैं। इसमें एक मास्टर नोड शामिल है जो एक या अधिक वर्कर नोड्स (शार्ड्स) को व्यवस्थित करता है। नेटवर्क अंतर्निहित स्टोरेज को एब्स्ट्रैक्ट करता है, इसलिए एकल क्वेरी स्वतः ही प्रत्येक शार्ड को प्रसारित हो जाती है और परिणामों को मर्ज करके कॉलर को वापस किया जाता है।
GroupDocs.Search नेटवर्क को कॉन्फ़िगर क्यों करें?
GroupDocs.Search नेटवर्क को कॉन्फ़िगर करने से आपको तीन ठोस लाभ मिलते हैं: scalability, reliability, और enhanced relevance। इंडेक्सिंग लोड को 20 तक नोड्स में वितरित करके, प्रत्येक 5 GB शार्ड संभालते हुए, आप एकल‑नोड सेटअप की तुलना में कुल इंडेक्सिंग समय लगभग 70 % तक कम कर सकते हैं। समानार्थी शब्द शब्दकोश जोड़ने से वैकल्पिक शब्दावली वाले क्वेरीज़ के लिए रिकॉल 35 % तक बढ़ जाता है, जबकि नोड रिडंडेंसी मेंटेनेंस विंडो के दौरान 99.9 % अपटाइम सुनिश्चित करती है।
पूर्वापेक्षाएँ
- Java Development Kit (JDK) 8 – 21 (कोई भी LTS संस्करण)
- Maven 3.5 + प्रोजेक्ट बनाने के लिए
- बुनियादी Java सिंटैक्स और Maven डिपेंडेंसी मैनेजमेंट की परिचितता
- GroupDocs.Search for Java लाइब्रेरी तक पहुंच (Maven Central या आधिकारिक रिलीज़ पेज के माध्यम से उपलब्ध)
Java के लिए GroupDocs.Search सेट अप करना
अपने Maven pom.xml में रिपॉज़िटरी और डिपेंडेंसी जोड़ें:
निम्नलिखित XML स्निपेट GroupDocs.Search रिपॉज़िटरी और लाइब्रेरी डिपेंडेंसी जोड़ता है।
<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>
वैकल्पिक रूप से, नवीनतम संस्करण सीधे GroupDocs.Search for Java releases से डाउनलोड करें।
लाइसेंस प्राप्ति
- Free Trial – बिना लागत के मुख्य सुविधाओं का अन्वेषण करें।
- Temporary License – अल्पकालिक परीक्षण के लिए पूरी क्षमताओं को अनलॉक करें।
- Commercial License – उत्पादन डिप्लॉयमेंट के लिए आवश्यक और प्रीमियम सपोर्ट प्राप्त करने के लिए आवश्यक।
बुनियादी इनिशियलाइज़ेशन और सेटअप
लाइब्रेरी को सही ढंग से लोड होने की पुष्टि करने के लिए एक सरल Java क्लास बनाएं:
SampleInitializer क्लास GroupDocs.Search इंजन को लोड करने का प्रदर्शन करती है।
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Initialize the index
Index index = new Index("YOUR_INDEX_DIRECTORY");
System.out.println("GroupDocs.Search is ready to use!");
}
}
GroupDocs.Search नेटवर्क को कॉन्फ़िगर करने के लिए चरण‑दर‑चरण गाइड
1. सर्च नेटवर्क को कॉन्फ़िगर करना
नोड संचार के लिए बेस दस्तावेज़ फ़ोल्डर और प्रारंभिक पोर्ट निर्धारित करें।
SearchNetworkConfig नेटवर्क नोड्स की कॉन्फ़िगरेशन रखता है।
import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.configuring.*;
public class ConfigureSearchNetwork {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
int basePort = 49128;
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
// Configuration details and setup logic
}
}
- basePath – वह डायरेक्टरी जहाँ शब्दकोश (जैसे, समानार्थी फ़ाइलें) स्थित हैं।
- basePort – पहला पोर्ट; बाद के नोड्स इस मान से इन्क्रिमेंट होते हैं।
2. सर्च नेटवर्क नोड्स को डिप्लॉय करना
एक ही कॉन्फ़िगरेशन साझा करने वाले कई वर्कर नोड्स को स्पिन अप करें।
SearchNode वितरित नेटवर्क में एक व्यक्तिगत नोड को दर्शाता है।
import com.groupdocs.search.scaling.*;
public class DeploySearchNetworkNodes {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
int basePort = 49128;
Configuration configuration = new Configuration();
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
// Node deployment logic
}
}
प्रत्येक नोड अपने स्वयं के पोर्ट (basePort + index) पर चलता है और समग्र इंडेक्स का एक शार्ड रखता है, जिससे इंडेक्सिंग और क्वेरी निष्पादन दोनों का समानांतर प्रोसेसिंग संभव होता है।
3. नोड इवेंट्स की सदस्यता लेना
मास्टर नोड पर एक इवेंट लिस्नर संलग्न करके स्वास्थ्य, इंडेक्सिंग प्रगति, और त्रुटि स्थितियों की निगरानी करें।
NetworkEventListener नोड जीवनचक्र इवेंट्स के लिए कॉलबैक्स को संभालता है।
import com.groupdocs.search.scaling.*;
public class SubscribeToNodeEvents {
public static void run() {
SearchNetworkNode masterNode = new SearchNetworkNode();
SearchNetworkNodeEvents.subscribe(masterNode);
// Event subscription logic
}
}
इवेंट कॉलबैक्स आपको नोड स्टार्ट/स्टॉप, इंडेक्सिंग पूर्णता, और अप्रत्याशित विफलताओं पर प्रतिक्रिया देने की अनुमति देते हैं, जिससे आपको वितरित सिस्टम पर पूर्ण अवलोकन मिलता है।
4. नोड के इंडेक्सर में समानार्थी शब्द जोड़ना
रनटाइम पर इंडेक्स में समानार्थी शब्द जोड़ें करके प्रासंगिकता बढ़ाएँ।
SynonymDictionary इंडेक्सर में समानार्थी समूह जोड़ने की अनुमति देता है।
import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.*;
public class AddSynonyms {
public static void run(SearchNetworkNode node) {
String[] group = { "efficitur", "tristique", "venenatis" };
boolean clearBeforeAdding = true;
Indexer indexer = node.getIndexer();
int[] indices = node.getShardIndices();
SynonymDictionary dictionary = indexer.getSynonymDictionary(indices[0]);
if (clearBeforeAdding) {
dictionary.clear();
}
dictionary.addRange(new String[][] { group });
indexer.setDictionary(dictionary);
// Synonym addition logic
}
}
- group – शब्दों की एक एरे जो समकक्ष मानी जानी चाहिए।
- clearBeforeAdding – यदि आप मौजूदा एंट्रीज़ को बदलना चाहते हैं तो इसे
trueसेट करें।
5. इंडेक्सिंग के लिए डायरेक्टरी जोड़ना
मास्टर नोड को बताएं कि कौन से फ़ोल्डर में वे दस्तावेज़ हैं जिन्हें आप खोज योग्य बनाना चाहते हैं।
Indexer.addDirectory इंडेक्सिंग के लिए एक फ़ोल्डर को रजिस्टर करता है।
import com.groupdocs.search.scaling.*;
import com.groupdocs.search.examples.Utils;
public class AddDirectoriesForIndexing {
public static void run(SearchNetworkNode masterNode) {
String documentsPath = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath";
IndexingDocuments.addDirectories(masterNode, documentsPath);
// Directory addition logic
}
}
यह मेथड डायरेक्टरी को पुनरावर्ती रूप से स्कैन करता है और फ़ाइलों को शार्ड्स में वितरित करता है, 10 TB से अधिक डेटा का समर्थन करता है बिना पूरी फ़ाइलों को मेमोरी में लोड किए।
6. नेटवर्क में टेक्स्ट सर्च करना
सभी नोड्स पर एक क्वेरी निष्पादित करें, वैकल्पिक रूप से सटीक‑मैच व्यवहार को मजबूर करें।
SearchEngine.search नेटवर्क पर क्वेरी चलाता है।
import com.groupdocs.search.scaling.*;
public class PerformTextSearch {
public static void run(SearchNetworkNode masterNode) {
String query = "tristique";
boolean exactMatchOnly = false;
TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
exactMatchOnly = true;
TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
// Search execution logic
}
}
जब आपको स्टेमिंग के बिना सख्त टर्म मैचिंग चाहिए, तो exactMatchOnly को true पर सेट करें, जिससे कोड‑सर्च परिदृश्यों में प्रिसीजन 20 % तक बढ़ सकता है।
7. नेटवर्क नोड्स को बंद करना
प्रोसेसिंग पूर्ण होने पर संसाधनों को सुगमता से रिलीज़ करें।
node.close() एक SearchNode को बंद करता है और संसाधनों को मुक्त करता है।
import com.groupdocs.search.scaling.*;
public class CloseNetworkNodes {
public static void run(SearchNetworkNode[] nodes) {
for (SearchNetworkNode node : nodes) {
node.close();
// Node closure logic
}
}
}
उचित शटडाउन मेमोरी लीक को रोकता है और JVM को स्वस्थ रखता है, विशेष रूप से उन दीर्घकालिक सेवाओं में जो ऑफ‑पीक घंटों में नोड्स को रीसायकल करती हैं।
व्यावहारिक अनुप्रयोग
| परिदृश्य | नेटवर्क कैसे मदद करता है |
|---|---|
| Enterprise Search | डेटा‑सेंटर सर्वरों में इंडेक्सिंग वितरित करें पेटाबाइट‑स्केल कॉर्पोरा के लिए, 100 M+ दस्तावेज़ों के लिए सब‑सेकंड क्वेरी लेटेंसी प्राप्त करें। |
| Document Management | समानार्थी शब्द इंडेक्स में जोड़ें ताकि उपयोगकर्ता विभिन्न शब्दावली के साथ भी दस्तावेज़ खोज सकें, रिकॉल 35 % तक बढ़े। |
| E‑commerce Catalog | क्षेत्र‑विशिष्ट नोड्स डिप्लॉय करें ताकि स्थानीयकृत प्रोडक्ट सर्च तेज़ी से हो, औसत प्रतिक्रिया समय 250 ms से 80 ms तक घटे। |
| Content Management | संपादक विशिष्ट डायरेक्टरी में नई फ़ाइलें जोड़ते समय भी कंटेंट सर्चेबल रखें; नेटवर्क बिना डाउनटाइम के क्रमिक रूप से पुनः‑इंडेक्स करता है। |
सामान्य समस्याएँ और समाधान
- Port Conflicts – सुनिश्चित करें कि प्रत्येक नोड का पोर्ट (
basePort + index) मुक्त है; आवश्यकता होने परbasePortको समायोजित करें। - Synonym Not Applied – पुष्टि करें कि शब्द जोड़ने के बाद आपने
indexer.setDictionary(dictionary)कॉल किया है; अन्यथा नए समानार्थी शब्द खोज में विचार नहीं किए जाएंगे। - Node Not Responding – इवेंट्स की सदस्यता लें; नेटवर्क समस्याओं का निदान करने के लिए
NodeFailedकॉलबैक्स देखें। - Memory Leak on Close – प्रत्येक डिप्लॉय किए गए नोड के लिए हमेशा
node.close()को कॉल करें; स्वचालित क्लीनअप के लिए try‑with‑resources ब्लॉक उपयोग करने पर विचार करें।
अक्सर पूछे जाने वाले प्रश्न
Q: कई नोड्स डिप्लॉय करने से सर्च प्रदर्शन कैसे सुधरता है?
A: प्रत्येक नोड डेटा का एक शार्ड इंडेक्स करता है, जिससे समानांतर प्रोसेसिंग संभव होती है और वर्कलोड क्लस्टर में साझा होने के कारण क्वेरी लेटेंसी घटती है।
Q: क्या मैं मौजूदा दस्तावेज़ों को पुनः‑इंडेक्स किए बिना समानार्थी शब्द जोड़ सकता हूँ?
A: हाँ, आप रनटाइम पर समानार्थी शब्द शब्दकोश के माध्यम से इंडेक्स में समानार्थी शब्द जोड़ें; परिवर्तन नई क्वेरीज़ के लिए तुरंत प्रभावी हो जाते हैं।
Q: क्या नोड इवेंट्स की सदस्यता अनिवार्य है?
A: बुनियादी संचालन के लिए आवश्यक नहीं है, लेकिन इवेंट सब्सक्रिप्शन नोड स्वास्थ्य की दृश्यता प्रदान करता है और विफलताओं पर शीघ्र प्रतिक्रिया में मदद करता है।
Q: नोड संसाधनों के प्रबंधन के लिए सर्वोत्तम प्रथाएँ क्या हैं?
A: नियमित रूप से निष्क्रिय नोड्स को बंद करें, JVM मेमोरी उपयोग की निगरानी करें, और ऑफ‑पीक घंटों में नोड्स को रीसायकल करें ताकि संसाधन खपत इष्टतम रहे।
Q: क्या GroupDocs.Search गैर‑टेक्स्ट फॉर्मैट जैसे PDFs या इमेजेज को सपोर्ट करता है?
A: बिल्कुल। लाइब्रेरी PDFs, Office फ़ाइलों से टेक्स्ट निकालती है और इमेजेज पर OCR करती है, जिससे वे बॉक्स से बाहर ही सर्चेबल बन जाते हैं।
अंतिम अपडेट: 2026-07-16
परीक्षित संस्करण: GroupDocs.Search 25.4 for Java
लेखक: GroupDocs