हाइलाइट सर्च रिज़ल्ट्स जावा – सिंक्रोनस और असिंक इंडेक्सिंग
इस गाइड में आप GroupDocs.Search लाइब्रेरी का उपयोग करके highlight search results Java कैसे करें, यह जानेंगे, और आप चरण‑बद्ध तरीके से देखेंगे कि जावा में दस्तावेज़ों को सिंक्रोनस और असिंक्रोनस दोनों तरीके से कैसे इंडेक्स किया जाता है। चाहे आप एक छोटा डेस्कटॉप टूल बना रहे हों या बड़े पैमाने पर एंटरप्राइज़ सर्च सेवा, ये तकनीकें आपको तुरंत, दृश्य रूप से स्पष्ट मिलान प्रदान करती हैं बिना आपके एप्लिकेशन थ्रेड्स को ब्लॉक किए।
त्वरित उत्तर
- “highlight search results Java” क्या मतलब है? इसका अर्थ है कि लौटाए गए स्निपेट्स में प्रत्येक मेल खाने वाले शब्द को मार्कअप (जैसे
<mark>) से घेरना, ताकि उपयोगकर्ता तुरंत हिट के संदर्भ को देख सकें। - सिंक्रोनस इंडेक्सिंग कब उपयोग करनी चाहिए? इसे छोटे‑से‑मध्यम संग्रहों के लिए उपयोग करें जहाँ आपको दस्तावेज़ को जोड़ते ही सर्चेबल बनाना हो।
- असिंक्रोनस इंडेक्सिंग कब बेहतर है? बड़े बैचों के लिए या जब UI थ्रेड को बैकग्राउंड में इंडेक्स बनते समय भी प्रतिक्रियाशील रखना हो, तब इसे चुनें।
- क्या मुझे लाइसेंस चाहिए? विकास के लिए एक फ्री ट्रायल काम करता है; पूर्ण लाइसेंस सीमाओं को हटाता है और उन्नत सुविधाएँ अनलॉक करता है।
- कौन सा जावा संस्करण समर्थित है? जावा 8 या बाद का।
“highlight search results Java” क्या है?
highlight search results java वह प्रक्रिया है जिसमें GroupDocs.Search से प्राप्त कच्चा मैच डेटा लेकर प्रत्येक पाए गए शब्द के चारों ओर दृश्य संकेत—आमतौर पर HTML <mark> टैग—डाले जाते हैं। इससे परिणाम स्निपेट्स वेब पेज या Swing कंपोनेंट में तुरंत पढ़ने योग्य बनते हैं, जिससे उपयोगकर्ता अनुभव सुधरता है क्योंकि यह दिखाता है कि क्वेरी ठीक कहाँ प्रकट हुई।
जावा के लिए GroupDocs.Search क्यों उपयोग करें?
GroupDocs.Search एक हाई‑परफ़ॉर्मेंस, भाषा‑अज्ञेय इंजन प्रदान करता है जो प्रति सेकंड 5 000 दस्तावेज़ तक प्रोसेस कर सकता है, 30+ फ़ाइल फ़ॉर्मेट्स को सपोर्ट करता है, और 10 मिलियन‑डॉक्यूमेंट कलेक्शन को इंडेक्स कर सकता है बिना पूरे कॉर्पस को मेमोरी में लोड किए। इसका बिल्ट‑इन हाइलाइटिंग, रियल‑टाइम इंडेक्सिंग, और मल्टी‑लैंग्वेज़ एनालाइज़र इसे कंटेंट‑मैनेजमेंट सिस्टम, ई‑कॉमर्स कैटलॉग, और एंटरप्राइज़ डॉक्यूमेंट रिपॉज़िटरीज़ के लिए आदर्श बनाते हैं।
पूर्वापेक्षाएँ
- Java Development Kit (JDK 8 या नया) स्थापित हो और
JAVA_HOMEसही ढंग से सेट हो। - IntelliJ IDEA या Eclipse जैसे IDE।
- एक फ़ोल्डर (जैसे
documents/) जिसमें आप इंडेक्स करना चाहते फ़ाइलें हों—प्लेन टेक्स्ट, PDF, DOCX, आदि। - डिपेंडेंसी मैनेजमेंट के लिए Maven (या आप मैन्युअली JAR जोड़ सकते हैं)।
आवश्यक लाइब्रेरी और डिपेंडेंसीज़
अपने Maven pom.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।
पर्यावरण सेटअप
- सुनिश्चित करें कि
JAVA_HOMEएक संगत JDK की ओर इशारा कर रहा है। - एक नया Maven प्रोजेक्ट बनाएं और ऊपर दिया गया स्निपेट
<dependencies>सेक्शन में पेस्ट करें। - नमूना फ़ाइलें
src/main/resources/documents/जैसी डायरेक्टरी में रखें।
जावा के लिए GroupDocs.Search कैसे सेट अप करें
Index वह कोर क्लास है जो डिस्क पर संग्रहीत सर्चेबल कलेक्शन का प्रतिनिधित्व करता है।
डिस्क पर एक फ़ोल्डर की ओर इशारा करने वाला Index इंस्टेंस बनाएं, यदि आपके पास लाइसेंस है तो उसे लागू करें, और वैकल्पिक रूप से भाषा‑विशिष्ट टोकनाइज़ेशन के लिए एक एनालाइज़र कॉन्फ़िगर करें। यह तैयारी चरण सुनिश्चित करता है कि इंजन इंडेक्स को कुशलतापूर्वक पढ़, लिख और सर्च कर सके।
Index क्लास एक कोर कंपोनेंट है जो डिस्क पर सर्चेबल कलेक्शन का प्रतिनिधित्व करता है। इसे इंस्टैंशिएट करने के बाद, सभी इंडेक्सिंग और क्वेरी ऑपरेशन्स इस ऑब्जेक्ट के माध्यम से होते हैं।
- लाइब्रेरी इंस्टॉल करें – ऊपर दिया गया Maven स्निपेट उपयोग करें या JAR को GroupDocs से डाउनलोड करें।
- लाइसेंस प्राप्त करें – ट्रायल लाइसेंस से शुरू करें; डिप्लॉयमेंट से पहले इसे प्रोडक्शन की से बदलें।
- इंडेक्स इनिशियलाइज़ करें – नीचे दिया गया स्निपेट दिखाता है कि कैसे (या खोलें) एक इंडेक्स फ़ोल्डर बनाएं:
import com.groupdocs.search.Index;
// Create an index in the specified folder
Index index = new Index("path/to/index/folder");
हाइलाइट सर्च रिज़ल्ट्स जावा – सिंक्रोनस इंडेक्सिंग
DocumentHighlighter एक यूटिलिटी क्लास है जो सर्च रिज़ल्ट्स से हाइलाइटेड स्निपेट्स जनरेट करता है।
इंडेक्स लोड करें, index.add(documentPath) से दस्तावेज़ जोड़ें, एक क्वेरी चलाएँ, और फिर DocumentHighlighter को कॉल करके मैच को <mark> टैग में रैप करें। पूरी प्रक्रिया कॉलिंग थ्रेड पर चलती है, इसलिए add रिटर्न होने के बाद दस्तावेज़ तुरंत सर्चेबल हो जाता है।
चरण 1: इंडेक्स बनाएं और एरर हैंडलिंग जोड़ें
import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;
public class SynchronousIndexingFeature {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path
Index index = new Index(indexFolder);
// Handle errors
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
@Override
public void invoke(Object sender, IndexErrorEventArgs args) {
System.out.println(args.getMessage());
}
});
चरण 2: दस्तावेज़ जोड़ें और सर्च चलाएँ
// Add documents
index.add(documentsFolder);
// Perform a search
String query = "tincidunt";
SearchResult result = index.search(query);
चरण 3: परिणाम प्रोसेस करें और हाइलाइट सर्च रिज़ल्ट्स जावा
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
System.out.println(": Occurrences: " + document.getOccurrenceCount());
}
// Highlight results
if (result.getDocumentCount() > 0) {
FoundDocument document = result.getFoundDocument(0);
String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
}
}
}
हाइलाइट सर्च रिज़ल्ट्स जावा – असिंक्रोनस इंडेक्सिंग
IndexingOptions यह कॉन्फ़िगर करता है कि इंडेक्सिंग प्रोसेस कैसे चलेगा, जिसमें सिंक्रोनस या असिंक्रोनस मोड शामिल है।
IndexingOptions को बैकग्राउंड मोड में चलाने के लिए कॉन्फ़िगर करें, StatusChanged इवेंट्स को सब्सक्राइब करें, और इंजन को फ़ाइलें इंडेक्स करने दें जबकि आपका UI अन्य अनुरोधों को सर्व करता रहे। जब स्टेटस Ready में बदल जाए, तो आप सर्च चला सकते हैं और सिंक्रोनस मोड की तरह हाइलाइटेड स्निपेट्स प्राप्त कर सकते हैं।
AsyncIndexingListener प्रोग्रेस अपडेट प्राप्त करता है, जिससे आप प्रोग्रेस बार दिखा सकते हैं या स्टेटस लॉग कर सकते हैं बिना मुख्य थ्रेड को ब्लॉक किए।
चरण 1: इवेंट लिस्नर्स के साथ इंडेक्स सेट अप करें
import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
public class AsynchronousIndexingFeature {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path
Index index = new Index(indexFolder);
// Handle errors and status changes
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
@Override
public void invoke(Object sender, IndexErrorEventArgs args) {
System.out.println(args.getMessage());
}
});
index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
@Override
public void invoke(Object sender, BaseIndexEventArgs args) {
if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
System.out.println("Indexing completed.");
}
}
});
चरण 2: असिंक्रोनस मोड सक्षम करें और इंडेक्सिंग शुरू करें
// Set up async indexing options
IndexingOptions options = new IndexingOptions();
options.setAsync(true);
// Add documents asynchronously
index.add(documentsFolder, options);
}
}
जावा में दस्तावेज़ इंडेक्स कैसे करें – व्यावहारिक टिप्स
index.update(path) निर्दिष्ट पाथ की फ़ाइल के साथ इंडेक्स में मौजूदा दस्तावेज़ को अपडेट करता है।
बड़ी कलेक्शन को 1 000–5 000 फ़ाइलों के बैच में विभाजित करें, अनावश्यक पार्सिंग से बचने के लिए एक्सटेंशन द्वारा फ़िल्टर करें, और पूरे इंडेक्स को रीबिल्ड करने के बजाय बदलती फ़ाइलों के लिए index.update(path) उपयोग करें। ये प्रैक्टिसेज मेमोरी उपयोग को कम रखती हैं और इंडेक्सिंग समय को पूर्वानुमेय बनाती हैं जिससे स्थिरता बनी रहती है।
- बैच साइज: बड़े कलेक्शन के लिए, मेमोरी स्पाइक से बचने हेतु फ़ोल्डर को छोटे बैचों में विभाजित करें।
- फ़ाइल फ़िल्टर: केवल आवश्यक फ़ॉर्मेट्स (जैसे
.pdf,.docx) को शामिल करने के लिएIndexingOptions.setFileExtensionsउपयोग करें। - री‑इंडेक्सिंग: जब दस्तावेज़ बदलता है, तो इंडेक्स को स्क्रैच से फिर से बनाने के बजाय
index.update(documentPath)कॉल करें।
प्रदर्शन संबंधी विचार
- मेमोरी: हीप उपयोग मॉनिटर करें; यदि आप एक साथ कई बड़े फ़ाइलें प्रोसेस कर रहे हैं तो
-Xmxबढ़ाएँ। - CPU: असिंक्रोनस इंडेक्सिंग वर्कलोड को थ्रेड्स में बाँटता है लेकिन फिर भी CPU का उपयोग करता है—JVisualVM से उपयोग ट्रैक करें।
- रिज़ल्ट हाइलाइटिंग: हाइलाइटिंग में मामूली ओवरहेड जोड़ता है (≈ 2–5 ms प्रति रिज़ल्ट)। यदि आपको एक ही स्निपेट्स बार‑बार दिखाने हैं तो जनरेटेड HTML को कैश करें।
अक्सर पूछे जाने वाले प्रश्न
Q: क्या मैं एक ही एप्लिकेशन में सिंक्रोनस और असिंक्रोनस दोनों इंडेक्सिंग को संयोजित कर सकता हूँ?
A: हाँ। छोटे, अक्सर अपडेट होने वाले सेट्स के लिए सिंक्रोनस इंडेक्सिंग उपयोग करें और बड़े इम्पोर्ट या बैकग्राउंड जॉब्स के लिए असिंक्रोनस इंडेक्सिंग।
Q: हाइलाइट स्टाइल को कैसे कस्टमाइज़ करूँ?
A: एक कस्टम DocumentHighlighter इम्प्लीमेंटेशन प्रदान करें जो मैच्ड टर्म्स के चारों ओर इच्छित HTML, CSS, या XML टैग लिखे।
Q: GroupDocs.Search डिफ़ॉल्ट रूप से कौन‑से फ़ाइल टाइप्स को सपोर्ट करता है?
A: टेक्स्ट, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML, और कई अन्य बिल्ट‑इन पार्सर्स के माध्यम से—कुल मिलाकर 30 से अधिक फ़ॉर्मेट्स।
Q: क्या एक साथ कई भाषाओं में सर्च करना संभव है?
A: बिल्कुल। GroupDocs.Search में मल्टी‑लैंग्वेज़ एनालाइज़र शामिल हैं; इंडेक्स बनाते समय उपयुक्त Analyzer कॉन्फ़िगर करें।
Q: इंडेक्स फ़ोल्डर को कैसे सुरक्षित करूँ?
A: इंडेक्स को एक प्रोटेक्टेड डायरेक्टरी में रखें, कड़ी फ़ाइल‑सिस्टम परमिशन सेट करें, और वैकल्पिक रूप से लाइब्रेरी की सुरक्षा सुविधाओं से इंडेक्स को एन्क्रिप्ट करें।
अंतिम अपडेट: 2026-09-11
परीक्षण किया गया: GroupDocs.Search 25.4 for Java
लेखक: GroupDocs