GroupDocs.Search गाइड के साथ attribute java द्वारा खोज

आधुनिक दस्तावेज‑केंद्रित अनुप्रयोगों में आपको अक्सर फ़ाइलों को केवल उनके पाठ सामग्री से नहीं, बल्कि विभाग, गोपनीयता स्तर, या निर्माण तिथि जैसे कस्टम मेटाडेटा के आधार पर भी ढूँढ़ना पड़ता है। Search by attribute java आपको यह क्षमता एक ही उच्च‑प्रदर्शन क्वेरी में देता है। इस ट्यूटोरियल में आप देखेंगे कि पहले से इंडेक्स किए गए फ़ाइलों पर एट्रिब्यूट्स को बैच‑अपडेट कैसे करें, इंडेक्सिंग के दौरान एट्रिब्यूट्स कैसे इंजेक्ट करें, और GroupDocs.Search for Java लाइब्रेरी का उपयोग करके मेटाडेटा द्वारा दस्तावेज़ों को प्रभावी ढंग से कैसे क्वेरी करें।

त्वरित उत्तर

  • What is “search by attribute java”? यह आपको प्रत्येक इंडेक्स किए गए दस्तावेज़ से जुड़ी key‑value मेटाडेटा के साथ खोज परिणामों को फ़िल्टर करने की सुविधा देता है।
  • Can I modify attributes after indexing? हाँ – पूरे इंडेक्स को पुनः बनाये बिना बल्क परिवर्तन लागू करने के लिए AttributeChangeBatch का उपयोग करें।
  • How do I add attributes while indexing? FileIndexing इवेंट के लिए एक हैंडलर रजिस्टर करें और प्रत्येक फ़ाइल के लिए प्रोग्रामेटिक रूप से एट्रिब्यूट सेट करें।
  • Do I need a license? मूल्यांकन के लिए एक मुफ्त ट्रायल काम करता है; प्रोडक्शन डिप्लॉयमेंट के लिए स्थायी लाइसेंस आवश्यक है।
  • Which Java version is required? Java 8 या बाद का संस्करण अनुशंसित है।

“search by attribute java” क्या है?

Search by attribute java आपको कस्टम मेटाडेटा (एट्रिब्यूट्स) के आधार पर दस्तावेज़ों को क्वेरी करने में सक्षम बनाता है, न कि केवल उनके टेक्स्ट सामग्री पर। यह दृष्टिकोण परिणाम सेट को नाटकीय रूप से संकुचित करता है, नेटवर्क ट्रैफ़िक को घटाता है, और प्रतिक्रिया समय को तेज़ करता है क्योंकि इंजन पूर्ण‑टेक्स्ट स्कैनिंग करने से पहले एट्रिब्यूट फ़िल्टर का मूल्यांकन करता है।

डायनेमिक मेटाडेटा टैगिंग का उपयोग क्यों करें?

डायनेमिक मेटाडेटा टैगिंग आपको दस्तावेज़ों के लिए कस्टम एट्रिब्यूट्स को बिना पुनः‑इंडेक्सिंग के असाइन, अपडेट और प्रबंधित करने की अनुमति देती है, जिससे लचीला वर्गीकरण मिलता है जो बदलते व्यावसायिक नियमों के अनुसार अनुकूलित होता है, खोज दक्षता में सुधार करता है, और बड़े रिपॉज़िटरीज़ में महंगे डेटा माइग्रेशन की आवश्यकता को कम करता है, जबकि अनुपालन और ऑडिटेबिलिटी बनाए रखता है।

  • Dynamic categorization – विकसित होते व्यावसायिक नियमों के साथ मेटाडेटा को सिंक में रखें।
  • Faster filtering – एट्रिब्यूट फ़िल्टर पूर्ण‑टेक्स्ट सर्च से पहले मूल्यांकित होते हैं, जिससे प्रतिक्रिया समय बढ़ता है।
  • Compliance tracking – रिटेंशन पॉलिसी या ऑडिट आवश्यकताओं के लिए दस्तावेज़ों को टैग करें।
  • Batch update attributes – सभी को पुनः‑इंडेक्स किए बिना एक ऑपरेशन में कई दस्तावेज़ों को बदलें।

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

  • Java 8+ (JDK 8 या नया)
  • GroupDocs.Search for Java लाइब्रेरी (नीचे Maven सेटअप देखें)
  • जावा कलेक्शन्स और एक्सेप्शन हैंडलिंग का बुनियादी परिचय

GroupDocs.Search for Java सेटअप

Maven सेटअप

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

<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repo.groupdocs.com/maven</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

डायरेक्ट डाउनलोड

वैकल्पिक रूप से, नवीनतम संस्करण GroupDocs.Search for Java releases से डाउनलोड करें। यदि आप Maven का उपयोग नहीं करना चाहते हैं, तो GroupDocs वेबसाइट से JAR प्राप्त करें।

लाइसेंस प्राप्ति

  • क्षमताओं का अन्वेषण करने के लिए मुफ्त ट्रायल से शुरू करें।
  • विस्तारित उपयोग के लिए, license page के माध्यम से अस्थायी या पूर्ण लाइसेंस प्राप्त करें।

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

// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);

// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");

दस्तावेज़ एट्रिब्यूट्स को कैसे संशोधित करें (बैच अपडेट)

इंडेक्स होने के बाद दस्तावेज़ एट्रिब्यूट्स को संशोधित करने के लिए, आप AttributeChangeBatch API का उपयोग करके बल्क अपडेट लागू कर सकते हैं। यह तरीका चयनित फ़ाइलों के मेटाडेटा को एक ही ट्रांज़ैक्शन में अपडेट करता है, पूरी कलेक्शन को पुनः‑इंडेक्स करने की ओवरहेड से बचाता है और पूर्ण‑टेक्स्ट इंडेक्स को अपरिवर्तित रखता है।

Direct answer: AttributeChangeBatch का उपयोग करके मेटाडेटा के जोड़, हटाने या प्रतिस्थापन को एकल एटॉमिक ऑपरेशन में समूहित करें, फिर बैच को इंडेक्स में कमिट करें। यह कई दस्तावेज़ों के एट्रिब्यूट्स को एक ही पास में अपडेट करता है जबकि मौजूदा पूर्ण‑टेक्स्ट इंडेक्स को संरक्षित रखता है।

चरण 1: इंडेक्स में दस्तावेज़ जोड़ें

index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");

चरण 2: इंडेक्स किए गए दस्तावेज़ की जानकारी प्राप्त करें

DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());

चरण 3: दस्तावेज़ एट्रिब्यूट्स का बैच अपडेट

AttributeChangeBatch क्लास कई एट्रिब्यूट संशोधनों को एकल एटॉमिक ऑपरेशन में समूहित करता है, I/O ओवरहेड को कम करता है और इंडेक्स की संगति सुनिश्चित करता है।

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);

चरण 4: एट्रिब्यूट फ़िल्टर के साथ खोजें

SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");

इंडेक्सिंग के दौरान एट्रिब्यूट्स कैसे जोड़ें

इंडेक्सिंग प्रक्रिया के दौरान एट्रिब्यूट्स जोड़ने से यह सुनिश्चित होता है कि प्रत्येक दस्तावेज़ प्रारंभ से ही आवश्यक मेटाडेटा से समृद्ध हो। FileIndexing इवेंट को हैंडल करके, आप प्रत्येक DocumentInfo ऑब्जेक्ट में इंजन फ़ाइल प्रोसेस करने से पहले प्रोग्रामेटिक रूप से key‑value जोड़े संलग्न कर सकते हैं, जिससे बाद की खोजों के लिए एट्रिब्यूट उपलब्धता सुसंगत रहती है।

Direct answer: फ़ाइलें जोड़ने से पहले FileIndexing इवेंट की सदस्यता लें; इवेंट हैंडलर में DocumentInfo ऑब्जेक्ट पर addAttribute कॉल करके key‑value जोड़े संलग्न करें, फिर इंडेक्स को फ़ाइल प्रोसेस करना जारी रखने दें।

चरण 1: FileIndexing इवेंट की सदस्यता लें

FileIndexing इवेंट प्रत्येक फ़ाइल के इंडेक्स में जोड़े जाने पर ट्रिगर होता है, जिससे आप कस्टम मेटाडेटा इंजेक्ट कर सकते हैं।

index.getEvents().FileIndexing.add(event -> {
    // Example: set department based on folder name
    String folder = new File(event.getFilePath()).getParentFile().getName();
    event.getDocumentInfo().addAttribute("department", folder);
});

चरण 2: दस्तावेज़ों को इंडेक्स करें

index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");

व्यावहारिक अनुप्रयोग

  1. Document management systems – इनजेशन पर फ़ाइलों को स्वचालित रूप से टैग करें, जिससे त्वरित फ़ेसट नेविगेशन सक्षम हो।
  2. Large content archives – एट्रिब्यूट फ़िल्टर को पूर्ण‑टेक्स्ट सर्च के साथ मिलाकर मल्टी‑गिगाबाइट कलेक्शन पर क्वेरी समय को मिनटों से सेकंड में घटाएँ।
  3. Compliance & reporting – नियामक जांच के लिए क्वेरी योग्य रिटेंशन अवधि, गोपनीयता स्तर, या ऑडिट फ़्लैग को डायनेमिक रूप से असाइन करें।

प्रदर्शन संबंधी विचार

  • Memory management – JVM हीप की निगरानी करें और -Xmx को ट्यून करें (उदा., 2 GB से बड़े इंडेक्स के लिए -Xmx4g)।
  • Batch processing – डिस्क राइट्स को कम करने के लिए AttributeChangeBatch के साथ एट्रिब्यूट परिवर्तन समूहित करें; ट्रांज़ैक्शन टाइमआउट से बचने के लिए 10 000 से अधिक संशोधनों वाले बैच को विभाजित करें।
  • Library updates – नवीनतम GroupDocs.Search रिलीज़ पर रहें; संस्करण 25.4 ने 24.x की तुलना में एट्रिब्यूट‑फ़िल्टर मूल्यांकन के लिए 30 % गति वृद्धि जोड़ी है।

सामान्य समस्याएँ और समाधान

समस्याक्यों होता हैसमाधान
Attributes not appliedइंडेक्सिंग से पहले इवेंट हैंडलर रजिस्टर नहीं किया गयासुनिश्चित करें कि index.getEvents().FileIndexing.add(...) सभी index.add(...) कॉल्स से पहले चलाया गया है।
Search returns no resultsएट्रिब्यूट नाम में असंगति (केस‑सेंसिटिव)फ़िल्टर बनाते समय सटीक एट्रिब्यूट नाम उपयोग करें (createAttribute("main"))।
Out‑of‑memory errors on large batchesएकल बैच में बहुत अधिक परिवर्तनबड़े अपडेट को छोटे AttributeChangeBatch इंस्टेंस में विभाजित करें (उदा., प्रति बैच 5 000 दस्तावेज़)।
License not recognizedलाइसेंस फ़ाइल लागू किए बिना ट्रायल JAR का उपयोगकिसी भी इंडेक्स ऑपरेशन से पहले License license = new License(); license.setLicense("path/to/license.file"); कॉल करें।

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

Q: What are the prerequisites for using GroupDocs.Search in Java?
A: Java 8+, GroupDocs.Search लाइब्रेरी, और इंडेक्सिंग अवधारणाओं का बुनियादी ज्ञान।

Q: How do I install GroupDocs.Search via Maven?
A: Maven सेटअप सेक्शन में दिखाए गए रिपॉजिटरी और डिपेंडेंसी को अपने pom.xml में जोड़ें।

Q: Can I modify attributes after documents are indexed?
A: हाँ, AttributeChangeBatch का उपयोग करके दस्तावेज़ एट्रिब्यूट्स को पुनः‑इंडेक्सिंग के बिना बैच अपडेट करें।

Q: What if my indexing process is slow?
A: JVM मेमोरी (-Xmx) को ऑप्टिमाइज़ करें, बैच अपडेट का उपयोग करें, और प्रदर्शन सुधार के लिए नवीनतम लाइब्रेरी संस्करण में अपग्रेड करें।

Q: Where can I find more resources on GroupDocs.Search for Java?
A: official documentation देखें या कम्युनिटी फ़ोरम्स एक्सप्लोर करें।

संसाधन

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

<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>
import com.groupdocs.search.Index;

// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;

DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes

// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;

SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;

index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
    @Override
    public void invoke(Object sender, FileIndexingEventArgs args) {
        if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
            args.setAttributes(new String[] { "main", "key" });
        }
    }
});
index.add("YOUR_DOCUMENT_DIRECTORY");

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