البحث حسب السمة java مع دليل GroupDocs.Search

في التطبيقات الحديثة التي تركز على المستندات، غالبًا ما تحتاج إلى تحديد موقع الملفات ليس فقط بناءً على محتواها النصي ولكن أيضًا عبر بيانات تعريف مخصصة مثل القسم، مستوى السرية، أو تاريخ الإنشاء. Search by attribute java يمنحك هذه القدرة في استعلام واحد عالي الأداء. في هذا البرنامج التعليمي سترى كيفية تحديث السمات دفعيًا على الملفات المفهرسة مسبقًا، وإدخال السمات أثناء الفهرسة، والاستعلام بفعالية عن المستندات عبر البيانات الوصفية باستخدام مكتبة GroupDocs.Search للغة Java.

إجابات سريعة

  • ما هو “search by attribute java”؟ يتيح لك تصفية نتائج البحث باستخدام بيانات تعريف مفتاح‑قيمة مرفقة بكل مستند مفهرس.
  • هل يمكنني تعديل السمات بعد الفهرسة؟ نعم – استخدم AttributeChangeBatch لتطبيق تغييرات جماعية دون إعادة بناء الفهرس بالكامل.
  • كيف يمكنني إضافة السمات أثناء الفهرسة؟ سجِّل معالجًا لحدث FileIndexing وقم بتعيين السمات برمجيًا لكل ملف.
  • هل أحتاج إلى ترخيص؟ نسخة تجريبية مجانية تعمل للتقييم؛ يلزم ترخيص دائم للنشر في بيئات الإنتاج.
  • ما نسخة Java المطلوبة؟ يُنصح باستخدام Java 8 أو أحدث.

ما هو “search by attribute java”؟

يُمكّن Search by attribute java من استعلام المستندات بناءً على بيانات تعريف مخصصة (سمات) بدلاً من محتواها النصي فقط. يضيق هذا النهج مجموعات النتائج بشكل كبير، يقلل من حركة المرور على الشبكة، ويسرّع أوقات الاستجابة لأن المحرك يقيم مرشحات السمات قبل تنفيذ الفحص النصي الكامل.

لماذا نستخدم وضع العلامات الديناميكية للبيانات الوصفية؟

يتيح وضع العلامات الديناميكية للبيانات الوصفية تعيين السمات المخصصة للمستندات وتحديثها وإدارتها دون الحاجة إلى إعادة الفهرسة، مما يوفر تصنيفًا مرنًا يتكيف مع قواعد الأعمال المتغيرة، ويحسن كفاءة البحث، ويقلل الحاجة إلى عمليات ترحيل بيانات مكلفة عبر مستودعات كبيرة مع الحفاظ على الامتثال وقابلية التدقيق.

  • التصنيف الديناميكي – حافظ على توافق البيانات الوصفية مع قواعد الأعمال المتطورة.
  • تصفية أسرع – يتم تقييم مرشحات السمات قبل البحث النصي الكامل، مما يعزز أوقات الاستجابة.
  • تتبع الامتثال – ضع علامات على المستندات لسياسات الاحتفاظ أو متطلبات التدقيق.
  • تحديث السمات دفعيًا – غيّر العديد من المستندات في عملية واحدة دون إعادة فهرسة كل شيء.

المتطلبات المسبقة

  • Java 8+ (JDK 8 أو أحدث)
  • GroupDocs.Search for Java library (انظر إعداد Maven أدناه)
  • إلمام أساسي بـ Java collections ومعالجة الاستثناءات

إعداد GroupDocs.Search للغة Java

إعداد Maven

أضف مستودع GroupDocs والاعتماد إلى ملف pom.xml الخاص بك:

<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، احصل على ملف JAR من GroupDocs website.

الحصول على الترخيص

  • ابدأ بنسخة تجريبية مجانية لاستكشاف القدرات.
  • للاستخدام الموسع، احصل على ترخيص مؤقت أو كامل عبر 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 لتطبيق تحديثات جماعية. يحدّث هذا النهج بيانات التعريف للملفات المختارة في معاملة واحدة، متجنبًا عبء إعادة فهرسة المجموعة بالكامل ويحافظ على فهرس النص الكامل.

الإجابة المباشرة: استخدم 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 تعديلات متعددة للسمات في عملية ذرية واحدة، مما يقلل من عبء الإدخال/الإخراج ويضمن اتساق الفهرس.

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 برمجيًا قبل أن يعالج المحرك الملف، مما يضمن توفر السمات بشكل ثابت للبحث اللاحق.

الإجابة المباشرة: اشترك في حدث FileIndexing قبل إضافة الملفات؛ في معالج الحدث، استدعِ addAttribute على كائن DocumentInfo لإرفاق أزواج مفتاح‑قيمة، ثم دع الفهرس يواصل معالجة الملف.

الخطوة 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. أنظمة إدارة المستندات – ضع علامات على الملفات تلقائيًا عند الاستيعاب، مما يتيح تنقلًا فوريًا عبر الفئات.
  2. أرشيفات المحتوى الكبيرة – اجمع بين مرشحات السمات والبحث النصي الكامل لتقليل زمن الاستعلام من دقائق إلى ثوانٍ على مجموعات متعددة الجيجابايت.
  3. الامتثال والتقارير – عيّن فترات الاحتفاظ، مستويات السرية، أو علامات التدقيق بشكل ديناميكي يمكن الاستعلام عنها للتحقق من المتطلبات التنظيمية.

اعتبارات الأداء

  • إدارة الذاكرة – راقب كومة JVM واضبط -Xmx (مثال: -Xmx4g للفهارس الأكبر من 2 GB).
  • المعالجة الدفعية – اجمع تغييرات السمات باستخدام AttributeChangeBatch لتقليل عمليات الكتابة على القرص؛ قسّم الدفعات التي تتجاوز 10 000 تعديل لتجنب انتهاء مهلات المعاملات.
  • تحديثات المكتبة – احرص على استخدام أحدث إصدار من GroupDocs.Search؛ النسخة 25.4 تضيف زيادة سرعة بنسبة 30 % لتقييم مرشحات السمات مقارنةً بـ 24.x.

المشكلات الشائعة والحلول

المشكلةلماذا يحدثكيفية الإصلاح
السمات غير مطبقةمعالج الحدث غير مسجل قبل الفهرسةتأكد من أن index.getEvents().FileIndexing.add(...) يتم تشغيله قبل أي استدعاءات index.add(...).
البحث لا يُعيد نتائجعدم تطابق اسم السمة (حسّاس لحالة الأحرف)استخدم أسماء السمات الدقيقة عند إنشاء المرشحات (createAttribute("main")).
أخطاء نفاد الذاكرة في الدفعات الكبيرةعدد كبير جدًا من التغييرات في دفعة واحدةقسّم التحديثات الكبيرة إلى مثيلات AttributeChangeBatch أصغر (مثلاً 5 000 مستند لكل دفعة).
الترخيص غير معترف بهاستخدام JAR تجريبي دون تطبيق ملف الترخيصاستدعِ License license = new License(); license.setLicense("path/to/license.file"); قبل أي عملية فهرسة.

الأسئلة المتكررة

س: ما هي المتطلبات المسبقة لاستخدام GroupDocs.Search في Java؟
ج: Java 8+, مكتبة GroupDocs.Search، ومعرفة أساسية بمفاهيم الفهرسة.

س: كيف أقوم بتثبيت GroupDocs.Search عبر Maven؟
ج: أضف المستودع والاعتماد الموضحين في قسم إعداد Maven إلى ملف pom.xml الخاص بك.

س: هل يمكنني تعديل السمات بعد فهرسة المستندات؟
ج: نعم، استخدم AttributeChangeBatch لتحديث سمات المستندات دفعيًا دون إعادة الفهرسة.

س: ماذا لو كانت عملية الفهرسة بطيئة؟
ج: حسّن ذاكرة JVM (-Xmx)، استخدم تحديثات دفعية، وارتقِ إلى أحدث نسخة من المكتبة للحصول على تصحيحات الأداء.

س: أين يمكنني العثور على المزيد من الموارد حول GroupDocs.Search للغة Java؟
ج: زر الوثائق الرسمية أو استكشف منتديات المجتمع.

الموارد


آخر تحديث: 2026-09-21
تم الاختبار مع: GroupDocs.Search 25.4 للغة 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");

دروس ذات صلة