كيفية تكوين الشبكة باستخدام GroupDocs.Search Java

المقدمة

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

إجابات سريعة

  • ما هو الغرض الأساسي من شبكة البحث؟ لتوزيع حمل الفهرسة والاستعلام عبر عدة عقد للحصول على قابلية توسع وموثوقية أفضل.
  • أي منفذ يستخدمه GroupDocs.Search بشكل افتراضي؟ المثال يستخدم المنفذ 49120، لكن يمكنك اختيار أي منفذ حر.
  • هل يمكنني إضافة أو إزالة العقد دون توقف الخدمة؟ نعم — يمكن نشر العقد أو إيقافها ديناميكيًا.
  • هل أحتاج إلى ترخيص للإنتاج؟ الترخيص الكامل مطلوب للاستخدام في بيئة الإنتاج؛ تراخيص تجريبية متاحة للتقييم.
  • هل يدعم البحث عن الصور مباشرةً؟ نعم — يوفر GroupDocs.Search مقارنة تجزئة الصور مدمجة.

ما هي شبكة البحث؟

شبكة البحث هي مجموعة من مثيلات SearchNetworkNode المتصلة التي تشارك معلومات الفهرسة وتستجيب للاستعلامات بشكل تعاوني. تسمح لك هذه البنية بالتعامل مع مجموعات مستندات ضخمة مع الحفاظ على أوقات استجابة منخفضة.

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

  • قابلية التوسع: أضف عقدًا كلما نمى مستودعك.
  • الأداء: الفهرسة والمعالجة المتوازية للاستعلامات تقلل من زمن الاستجابة.
  • المرونة: يدعم النص، PDF، ملفات Office، والبحث عن الصور.
  • الإدارة القائمة على الأحداث: مراقبة في الوقت الفعلي عبر الاشتراك في الأحداث.

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

  • JDK 8+ مثبت.
  • بيئة تطوير متكاملة مثل IntelliJ IDEA أو Eclipse.
  • Maven لإدارة التبعيات.
  • معرفة أساسية بجافا ومفاهيم الشبكات.

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

أضف مستودع GroupDocs والتبعية إلى ملف 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>

بدلاً من ذلك، قم بتنزيل أحدث نسخة من GroupDocs.Search for Java releases.

إعداد GroupDocs.Search for Java

التثبيت عبر Maven

المقتطف أعلاه في Maven يجلب المكتبة إلى مشروعك تلقائيًا.

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

  • تجربة مجانية – استكشف الميزات الأساسية.
  • ترخيص مؤقت – فترة اختبار ممتدة.
  • ترخيص كامل – جاهز للإنتاج، استخدام غير محدود.

التهيئة الأساسية والإعداد

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Create an instance of Index with the path to store index data.
        String indexPath = "path/to/index";
        Index index = new Index(indexPath);
        
        System.out.println("GroupDocs.Search initialized successfully.");
    }
}

دليل التنفيذ

سنغوص الآن في كل مهمة أساسية، باستخدام مقتطفات شفرة واضحة خطوة بخطوة.

كيفية نشر العقد في شبكة البحث

نشر عدة عقد يوزع عبء العمل ويحسن من تحمل الأخطاء.

public class SearchNetworkDeployment {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if necessary.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        System.out.println("Deployed " + nodes.length + " search network nodes.");
    }
}

التفسير:

  • basePath يشير إلى المجلد الذي يحتوي على مستنداتك.
  • basePort هو منفذ شبكة البحث الذي تستمع إليه كل عقدة؛ عدل ذلك لتجنب التعارضات.
  • تُعيد الطريقة مصفوفة من كائنات SearchNetworkNode التي تمثل كل عقدة نشطة.

كيفية الاشتراك في الأحداث

الاشتراك في الأحداث يمنحك نظرة مباشرة على صحة العقد، تقدم الفهرسة، والأخطاء.

public class NodeEventSubscription {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Adjust if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchNetworkEvents.subscribe(nodes[0]);
        
        System.out.println("Subscribed to events for the master node.");
    }
}

التفسير:

  • nodes[0] يُعامل كـ العقدة الرئيسية؛ يمكنك أيضًا الاشتراك في كل عقدة عامل على حدة.

كيفية فهرسة المستندات

الفهرسة الفعّالة هي العمود الفقري لنتائج بحث سريعة.

public class DocumentIndexing {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if there is a conflict.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        IndexingDocuments.addDirectories(nodes[0], "YOUR_DOCUMENT_DIRECTORY");
        
        System.out.println("Added directories to master node's index.");
    }
}

التفسير:

  • addDirectories يخبر العقدة الرئيسية أي مجلدات يجب مسحها وفهرستها.
  • بمجرد الفهرسة، يمكن لجميع العقد استعلام الفهرس المشترك.

كيفية إجراء بحث عن صورة

يدعم GroupDocs.Search مقارنة تجزئة الصور، مما يتيح لك العثور على أصول بصرية مشابهة.

public class ImageSearch {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Modify if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchImage searchImage = SearchImage.create("YOUR_DOCUMENT_DIRECTORY/ic_arrow_back_black_18dp.png");

        imageSearch(nodes[0], searchImage, 8);
    }
}

التفسير:

  • SearchImage.create يحمل الصورة المرجعية.
  • imageSearch ينفّذ الاستعلام على العقدة المختارة، مع السماح باهل).

كيفية تكوين منافذ الشبكة

إذا كان بيئتك تستخدم بالفعل المنفذ 49120،:

int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);

تأكد من أن المنفذ المختار مفتوح في جدار الحماية وغير مستخدم من قبل خدمات أخرى.

المشكلات الشائعة وإجراءات استكشاف الأخطاء

العَرَضالسبب المحتملالحل
فشل بدء العقدتعارض في المنفذاختر basePort مختلفًا وقم بتحديث قواعد جدار الحماية.
الفهرسة بطيئةعرض نطاق I/O غير كافٍاستخدم تخزين SSD وفعل الفهرسة المتزايدة.
عدم تشغيل اشتراك الأحداثعدم تسجيل معالج الحدثتأكد من استدعاء SearchNetworkEvents.subscribe(node) قبل بدء أي فهرسة.
بحث الصورة لا يُرجع نتائجفرق التجزئة منخفض جدًازد الفرق المسموح به (مثلاً من 4 إلى 8).

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

س: كيف يمكن تحسين أداء الفهرسة في شبكة GroupDocs.Search؟
ج: استخدم الفهرسة المتزايدة، خزن الفهرس على SSD سريع، وخصص ذاكرة heap كافية للـ JVM.

س: هل يمكن إضافة أو إزالة العقد دون إعادة تشغيل شبكة البحث بالكامل؟
ج: نعم — يمكن نشر العقد أو إيقافها ديناميكيًا. بعد إضافة عقدة، استدعِ SearchNetworkDeployment.deploy مرة أخرى لتحديث عرض العنقود.

س: كيف يحسن الاشتراك في الأحداث إدارة الشبكة؟
ج: توفر الأحداث المشترك فيها تنبيهات فورية لتغييرات حالة العقد، تقدم الفهرسة، والأخطاء، مما يتيح استكشاف الأخطاء بشكل استباقي.

س: هل يمكن البحث في صيغ مستندات مختلفة في آنٍ واحد؟
ج: بالتأكيد. يدعم GroupDocs.Search ملفات PDF، Word، Excel، PowerPoint، الصور، والعديد من الصيغ الأخرى في استعلام واحد.

س: ما مدى أمان البيانات في شبكة GroupDocs.Search؟
ج: الأمان يعتمد على بنية تحتية الخاصة بك. نفّذ SSL/TLS لتواصل العقد، قيد الوصول إلى الشبكة، واتبع أفضل الممارسات لحماية البيانات.


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