GroupDocs.Search के साथ java फुल टेक्स्ट सर्च कैसे लागू करें

डेटा‑ड्रिवेन एप्लिकेशनों के युग में, java full text search बड़े दस्तावेज़ संग्रहों को तुरंत खोज योग्य ज्ञान आधार में बदलने के लिए आवश्यक है। चाहे आप एंटरप्राइज़‑ग्रेड पोर्टल बना रहे हों या हल्का डेस्कटॉप यूटिलिटी, एक अच्छी तरह से कॉन्फ़िगर किया गया सर्च नेटवर्क क्वेरी लेटेंसी को सेकंड से मिलीसेकंड में घटा सकता है और डेटा बढ़ने पर परिणामों को प्रासंगिक रख सकता है। यह ट्यूटोरियल आपको GroupDocs.Search for Java को डिप्लॉय करने, फ़ाइलों को सर्च में जोड़ने, नोड्स पर डायरेक्टरीज़ कॉन्फ़िगर करने, और रियल‑टाइम इंडेक्सिंग सक्षम करने के माध्यम से ले जाता है ताकि आपका इंडेक्स मैन्युअल हस्तक्षेप के बिना ताज़ा रहे।

Why this matters: एक java फुल टेक्स्ट सर्च इंडेक्स क्वेरी लेटेंसी को कम करता है, डेटा वॉल्यूम के साथ स्केल करता है, और किसी भी Java‑आधारित समाधान—वेब पोर्टल, डेस्कटॉप ऐप, या क्लाउड माइक्रोसर्विसेज—में शक्तिशाली फुल‑टेक्स्ट क्षमताएँ लाता है।

त्वरित उत्तर

  • GroupDocs.Search का मुख्य उद्देश्य क्या है? यह एक स्केलेबल, java सर्च इंजन प्रदान करता है जो वितरित नेटवर्क में दस्तावेज़ों को इंडेक्स और सर्च करता है।
  • कौन सा संस्करण उपयोग करना चाहिए? नवीनतम स्थिर रिलीज़ (उदा., 25.4) नई परियोजनाओं के लिए अनुशंसित है।
  • क्या मुझे लाइसेंस चाहिए? 30‑दिन का फ्री ट्रायल उपलब्ध है; प्रोडक्शन उपयोग के लिए स्थायी लाइसेंस आवश्यक है।
  • क्या मैं फ़ाइलें और पूरी डायरेक्टरीज़ दोनों जोड़ सकता हूँ? हाँ – सामग्री इन्जेस्ट करने के लिए addFiles और addDirectories हेल्पर्स का उपयोग करें।
  • कौन सा Java संस्करण आवश्यक है? Java 8 या उससे ऊपर, साथ ही डिपेंडेंसी मैनेजमेंट के लिए Maven।
  • रियल‑टाइम इंडेक्सिंग java कैसे काम करता है? नोड इवेंट्स को सब्सक्राइब करके आप फ़ाइलों के बदलने पर स्वचालित री‑इंडेक्सिंग ट्रिगर कर सकते हैं।

“create searchable index java” क्या है?

Java में एक सर्चेबल इंडेक्स बनाना मतलब एक डेटा स्ट्रक्चर तैयार करना है जो टर्म्स को उन दस्तावेज़ों से मैप करता है जिनमें वे मौजूद हैं, जिससे तेज़ फुल‑टेक्स्ट क्वेरी संभव हो सके। GroupDocs.Search for Java भारी काम को एब्स्ट्रैक्ट करता है, जिससे आप दस्तावेज़ फीड करने और सर्च व्यवहार को ट्यून करने पर ध्यान केंद्रित कर सकते हैं।

GroupDocs.Search for Java क्यों उपयोग करें?

GroupDocs.Search एक java सर्च इंजन प्रदान करता है जो क्षैतिज रूप से स्केल करता है, 50 से अधिक इनपुट और आउटपुट फ़ॉर्मेट्स को सपोर्ट करता है, और इवेंट‑ड्रिवेन इंडेक्सिंग प्रदान करता है। कई नोड्स डिप्लॉय करने से इंडेक्सिंग वर्कलोड वितरित होता है, जबकि बिल्ट‑इन हेल्थ‑चेक्स नेटवर्क को विश्वसनीय बनाते हैं। यह RESTful APIs और कस्टमाइज़ेबल एनालाइज़र भी देता है जिससे रिलेवेंस को फाइन‑ट्यून किया जा सके।

पूर्वापेक्षाएँ

  • JDK 8+ आपके विकास मशीन पर इंस्टॉल हो।
  • IntelliJ IDEA या Eclipse जैसे IDE।
  • Java और Maven का बुनियादी ज्ञान।
  • GroupDocs.Search for Java लाइब्रेरी तक पहुँच (डाउनलोड या Maven)।

GroupDocs.Search for Java सेटअप करना

Maven निर्भरता

अपने pom.xml में रिपॉज़िटरी और डिपेंडेंसी जोड़ें:

<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>

Pro tip: आधिकारिक रिलीज़ पेज पर जाकर संस्करण संख्या को अपडेट रखें।

आप आधिकारिक साइट से सीधे JAR भी डाउनलोड कर सकते हैं: GroupDocs.Search for Java releases।

लाइसेंस प्राप्त करना

  • फ्री ट्रायल: 30‑दिन का मूल्यांकन।
  • अस्थायी लाइसेंस: विस्तारित परीक्षण के लिए अनुरोध करें।
  • खरीद: प्रोडक्शन डिप्लॉयमेंट्स के लिए आवश्यक।

बेसिक इनिशियलाइज़ेशन

एक कॉन्फ़िगरेशन ऑब्जेक्ट बनाएं जो उस फ़ोल्डर की ओर इशारा करता है जहाँ इंडेक्स फ़ाइलें संग्रहीत होंगी और बेस कम्युनिकेशन पोर्ट को परिभाषित करता है:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

GroupDocs.Search के साथ java फुल टेक्स्ट सर्च के लिए searchable index java कैसे बनाएं?

एक SearchConfiguration ऑब्जेक्ट लोड करें, एक SearchNetworkNode शुरू करें, और node.getIndexer().addFiles(...) को कॉल करके इंडेक्स को पॉप्युलेट करें। यह एक‑लाइन पैटर्न एक पूरी तरह कार्यशील java फुल टेक्स्ट सर्च नेटवर्क बूट करता है, जो तुरंत क्वेरी स्वीकार करने के लिए तैयार होता है। आप फिर अधिक नोड्स जोड़कर स्केल कर सकते हैं जो समान बेस पाथ और पोर्ट रेंज साझा करते हैं।

फीचर 1 – कॉन्फ़िगरेशन और नेटवर्क सेटअप

SearchConfiguration क्लास सभी सेटिंग्स रखती है जो नोड को स्पिन‑अप करने के लिए आवश्यक हैं।

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – वह डायरेक्टरी जहाँ इंडेक्स डेटा persisted होगा।
  • basePort – शुरुआती पोर्ट; प्रत्येक नोड इस मान से इंक्रीमेंट करेगा।

फीचर 2 – सर्च नेटवर्क नोड्स डिप्लॉय करना

SearchNetworkNode एक व्यक्तिगत इंडेक्सिंग सर्विस को दर्शाता है जिसे किसी भी मशीन पर चलाया जा सकता है।

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode कोर रनटाइम कंपोनेंट है जो इंडेक्स होस्ट करता है, add/remove इवेंट्स प्रोसेस करता है, और सर्च क्वेरीज़ का जवाब देता है। कई नोड्स डिप्लॉय करने से आप java फुल टेक्स्ट सर्च क्लस्टर्स बना सकते हैं जो क्षैतिज रूप से स्केल होते हैं।

फीचर 3 – नोड इवेंट्स को सब्सक्राइब करना

रियल‑टाइम अपडेट्स इंडेक्स को फ़ाइल‑सिस्टम बदलावों के साथ सिंक्रनाइज़ रखती हैं।

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

इवेंट्स को सुनकर आप नई फ़ाइलों के आने पर स्वचालित रूप से री‑इंडेक्सिंग ट्रिगर कर सकते हैं, जिससे इवेंट ड्रिवेन इंडेक्सिंग बिना मैनुअल स्क्रिप्ट्स के संभव हो जाती है।

फीचर 4 – नेटवर्क नोड में डायरेक्टरीज़ जोड़ना

इस हेल्पर का उपयोग करके डायरेक्टरीज़ को नोड में जोड़ें, सभी सपोर्टेड दस्तावेज़ों को रीकर्सिवली कलेक्ट करें।

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

DirectoryAdder.addDirectories(node, path) मेथड फ़ोल्डर ट्री को वॉक करता है और प्रत्येक सपोर्टेड फ़ाइल के लिए addFiles को कॉल करता है, जिससे बल्क इन्जेस्ट आसान हो जाता है।

फीचर 5 – नेटवर्क नोड में फ़ाइलें जोड़ना

जब आपको फाइन‑ग्रेन कंट्रोल चाहिए, तो फ़ाइलें एक‑एक करके सर्च में जोड़ें:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

addFiles एक मेथड है जो फ़ाइल पाथ्स या स्ट्रीम्स की लिस्ट स्वीकार करता है, जिससे आप क्लाउड स्टोरेज, टेम्पररी कैशेज़, या इन‑मेमोरी स्ट्रीम्स से दस्तावेज़ों को इंडेक्स कर सकते हैं।

सामान्य उपयोग केस

  • एंटरप्राइज़ दस्तावेज़ पोर्टल जो हजारों PDFs और Office फ़ाइलों में तुरंत सर्च की आवश्यकता रखते हैं।
  • लीगल e‑discovery प्लेटफ़ॉर्म जहाँ नई साक्ष्य लगातार जोड़ी जाती हैं और रियल‑टाइम में सर्चेबल होनी चाहिए।
  • कंटेंट मैनेजमेंट सिस्टम जो इमेजेज़, प्रेजेंटेशन, और स्प्रेडशीट्स स्टोर करते हैं और फुल‑टेक्स्ट लुकअप की जरूरत होती है।

सामान्य समस्याएँ एवं समाधान

समस्याकारणसमाधान
खोज परिणामों में कोई दस्तावेज़ नहीं दिख रहा हैइंडेक्स कमिट नहीं किया गयाफ़ाइलें जोड़ने के बाद node.getIndexer().commit() कॉल करें।
पोर्ट टकराव त्रुटिकोई अन्य सेवा basePort का उपयोग कर रही हैअलग basePort चुनें या फ्री पोर्ट्स की जाँच करें।
असमर्थित फ़ाइल फ़ॉर्मेटलाइब्रेरी में पार्सर नहीं हैसुनिश्चित करें कि फ़ाइल एक्सटेंशन सपोर्टेड है या एक कस्टम एक्सट्रैक्टर जोड़ें।

ट्रबलशूटिंग टिप्स

  • नोड हेल्थ वेरिफाई करें: बिल्ट‑इन हेल्थ‑चेक एन्डपॉइंट (http://localhost:{port}/health) का उपयोग करके प्रत्येक नोड चल रहा है या नहीं, पुष्टि करें।
  • मेमोरी उपयोग मॉनिटर करें: बड़े बैचेज़ मेमोरी स्पाइक कर सकते हैं; छोटे चंक्स में इंडेक्स करें और समय‑समय पर commit() कॉल करें।
  • लॉग्स देखें: GroupDocs.Search basePath फ़ोल्डर में विस्तृत लॉग लिखता है—पार्सिंग एरर्स या नेटवर्क टाइमआउट्स के लिए उन्हें रिव्यू करें।

अक्सर पूछे जाने वाले प्रश्न

प्रश्न: क्या मैं GroupDocs.Search को क्लाउड‑आधारित Java एप्लिकेशन में उपयोग कर सकता हूँ?
उत्तर: हाँ। लाइब्रेरी किसी भी Java रनटाइम के साथ काम करती है, और आप basePath को नेटवर्क‑माउंटेड फ़ोल्डर या क्लाउड स्टोरेज माउंट की ओर इशारा कर सकते हैं।

प्रश्न: फ़ाइल बदलने पर इंडेक्स को कैसे अपडेट करें?
उत्तर: नोड इवेंट्स को सब्सक्राइब करें (देखें फीचर 3) और संशोधित पाथ्स के लिए फिर से addFiles या addDirectories कॉल करें।

प्रश्न: मैं कितने नोड्स डिप्लॉय कर सकता हूँ?
उत्तर: व्यावहारिक रूप से सीमा आपके हार्डवेयर और नेटवर्क बैंडविड्थ पर निर्भर करती है। API में कोई हार्ड कैप नहीं है।

प्रश्न: नई फ़ाइलें जोड़ने के बाद नोड्स को रीस्टार्ट करना पड़ता है?
उत्तर: नहीं। फ़ाइलें जोड़ने से इंडेक्सिंग स्वचालित रूप से ट्रिगर होती है; यदि आप ऑपरेशन को डिफर करते हैं तो केवल commit की आवश्यकता होती है।

प्रश्न: कौन से दस्तावेज़ फ़ॉर्मेट डिफ़ॉल्ट रूप से सपोर्टेड हैं?
उत्तर: PDFs, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML, और कई इमेज टाइप्स—कुल मिलाकर 50 से अधिक फ़ॉर्मेट।

प्रश्न: लगातार अपलोड होने वाली फ़ोल्डर के लिए रियल‑टाइम इंडेक्सिंग java कैसे सक्षम करें?
उत्तर: एक फ़ाइल‑सिस्टम वॉचर (जैसे java.nio.file.WatchService) इम्प्लीमेंट करें जो नई फ़ाइल का पता चलने पर DirectoryAdder.addDirectories(node, path) को कॉल करता है।


अंतिम अपडेट: 2026-09-27
परीक्षण किया गया: GroupDocs.Search for Java 25.4
लेखक: GroupDocs

संबंधित ट्यूटोरियल