تسليط الضوء على نتائج البحث Java – الفهرسة المتزامنة وغير المتزامنة

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

إجابات سريعة

  • ما معنى “highlight search results Java”؟ يعني ذلك تغليف كل مصطلح متطابق في المقاطع المسترجعة بعلامة (مثلاً <mark>) حتى يتمكن المستخدمون من رؤية سياق النتيجة فورًا.
  • متى يجب علي استخدام الفهرسة المتزامنة؟ استخدمها للمجموعات الصغيرة إلى المتوسطة حيث تحتاج إلى أن يكون المستند قابلًا للبحث فور إضافته.
  • متى تكون الفهرسة غير المتزامنة مفضلة؟ اخترها للدفعات الكبيرة أو عندما يجب أن يبقى خيط واجهة المستخدم مستجيبًا بينما يتم بناء الفهرس في الخلفية.
  • هل أحتاج إلى ترخيص؟ النسخة التجريبية المجانية تعمل للتطوير؛ الترخيص الكامل يزيل القيود ويفتح الميزات المتقدمة.
  • ما نسخة Java المدعومة؟ Java 8 أو أحدث.

ما هو “highlight search results Java”؟

highlight search results java هي العملية التي يتم فيها أخذ بيانات التطابق الخام من GroupDocs.Search وإدراج إشارات بصرية—عادةً علامات HTML <mark>—حول كل مصطلح تم العثور عليه. هذا يجعل مقاطع النتائج قابلة للقراءة فورًا في صفحة ويب أو مكوّن Swing، مما يحسن تجربة المستخدم من خلال إظهار مكان ظهور الاستعلام بالضبط.

لماذا تستخدم GroupDocs.Search لـ Java؟

GroupDocs.Search يقدم محركًا عالي الأداء وغير معتمد على اللغة يمكنه معالجة حتى 5 000 مستند في الثانية، دعم أكثر من 30 صيغة ملف، وفهرسة مجموعات تصل إلى 10 ملايين مستند دون تحميل كامل المجموعة في الذاكرة. ميزات التسليط الضوئي المدمجة، الفهرسة في الوقت الحقيقي، ومحللات اللغات المتعددة تجعلها مثالية لأنظمة إدارة المحتوى، كتالوجات التجارة الإلكترونية، ومستودعات المستندات المؤسسية.

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

  • Java Development Kit (JDK 8 أو أحدث) مثبت وJAVA_HOME مضبوط بشكل صحيح.
  • بيئة تطوير متكاملة مثل IntelliJ IDEA أو Eclipse.
  • مجلد (مثلاً documents/) يحتوي على الملفات التي تريد فهرستها—نص عادي، PDF، DOCX، إلخ.
  • Maven لإدارة الاعتمادات (أو يمكنك إضافة JAR يدويًا).

المكتبات والاعتمادات المطلوبة

أضف GroupDocs.Search إلى ملف pom.xml الخاص بـ Maven:

<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 لـ Java

Index هو الفئة الأساسية التي تمثل مجموعة قابلة للبحث مخزنة على القرص.

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

فئة Index هي المكوّن الأساسي الذي يمثل مجموعة قابلة للبحث على القرص. بعد إنشاء مثيل لها، جميع عمليات الفهرسة والاستعلام تمر عبر هذا الكائن.

  1. تثبيت المكتبة – استخدم مقتطف Maven أعلاه أو حمّل JAR من GroupDocs.
  2. الحصول على ترخيص – ابدأ برخصة تجريبية؛ استبدلها بمفتاح إنتاج قبل النشر.
  3. تهيئة الفهرس – يوضح المقتطف التالي كيفية إنشاء (أو فتح) مجلد فهرس:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

كيفية تسليط الضوء على نتائج البحث Java – الفهرسة المتزامنة

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: معالجة النتائج وتسليط الضوء على نتائج البحث Java

        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);
        }
    }
}

كيفية تسليط الضوء على نتائج البحث Java – الفهرسة غير المتزامنة

IndexingOptions يضبط كيفية تشغيل عملية الفهرسة، بما في ذلك الوضع المتزامن أو غير المتزامن.

قم بتهيئة IndexingOptions لتعمل في وضع الخلفية، واشترك في أحداث StatusChanged، ودع المحرك يفهرس الملفات بينما تستمر واجهة المستخدم في خدمة طلبات أخرى. بمجرد تغيير الحالة إلى 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);
    }
}

كيفية فهرسة مستندات Java – نصائح عملية

index.update(path) يحدث مستندًا موجودًا في الفهرس بالملف الموجود في المسار المحدد.

قسّم المجموعات الكبيرة إلى دفعات من 1 000 إلى 5 000 ملف، وقم بالتصفيح حسب الامتداد لتجنب التحليل غير الضروري، واستخدم index.update(path) للملفات المتغيّرة بدلاً من إعادة بناء الفهرس بالكامل. هذه الممارسات تحافظ على انخفاض استهلاك الذاكرة وتوقيت الفهرسة المتوقع للحفاظ على الاتساق.

  • حجم الدفعة: للمجموعات الضخمة، قسّم المجلد إلى دفعات أصغر لتجنب ارتفاع الذاكرة.
  • مرشحات الملفات: استخدم IndexingOptions.setFileExtensions لتضمين الصيغ التي تحتاجها فقط (مثلاً .pdf، .docx).
  • إعادة الفهرسة: عندما يتغيّر مستند، استدعِ index.update(documentPath) بدلاً من إعادة إنشاء الفهرس من الصفر.

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

  • الذاكرة: راقب استخدام الـ heap؛ زد -Xmx إذا كنت تعالج العديد من الملفات الكبيرة في آن واحد.
  • المعالج: الفهرسة غير المتزامنة توزع عبء العمل عبر الخيوط لكنها لا تزال تستهلك المعالج—تابع الاستخدام باستخدام JVisualVM.
  • تسليط الضوء على النتائج: يضيف التسليط عبءً بسيطًا (≈ 2–5 ms لكل نتيجة). خزن الـ HTML المُولد في الذاكرة المؤقتة إذا كنت بحاجة لعرض نفس المقاطع مرارًا.

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

س: هل يمكنني دمج الفهرسة المتزامنة وغير المتزامنة في نفس التطبيق؟
ج: نعم. استخدم الفهرسة المتزامنة للمجموعات الصغيرة التي تُحدّث بشكل متكرر والفهرسة غير المتزامنة للاستيراد الضخم أو وظائف الخلفية.

س: كيف يمكنني تخصيص نمط التسليط؟
ج: قدم تنفيذًا مخصصًا لـ DocumentHighlighter يكتب HTML أو CSS أو XML المطلوب حول المصطلحات المتطابقة.

س: ما أنواع الملفات التي يدعمها GroupDocs.Search بشكل افتراضي؟
ج: النص، PDF، DOC/DOCX، XLS/XLSX، PPT/PPTX، HTML، والعديد غيرها عبر المحللات المدمجة—أكثر من 30 صيغة إجمالاً.

س: هل يمكن البحث بعدة لغات في آن واحد؟
ج: بالتأكيد. يحتوي GroupDocs.Search على محللات متعددة اللغات؛ ما عليك سوى تكوين Analyzer المناسب عند إنشاء الفهرس.

س: كيف يمكنني تأمين مجلد الفهرس؟
ج: احفظ الفهرس في دليل محمي، وضع أذونات نظام ملفات صارمة، واختياريًا شفر الفهرس باستخدام ميزات الأمان في المكتبة.


آخر تحديث: 2026-09-11
تم الاختبار مع: GroupDocs.Search 25.4 for Java
المؤلف: GroupDocs

دروس ذات صلة