لقد ناقشنا مؤخرًا ، كيفية الحصول على جميع المرادفات لأي كلمة. سيكون رائعًا لو تمكنا من تحديد هذه المرادفات في العديد من المستندات المختلفة. في هذه المقالة سوف نرى كيفية البحث عن أي كلمة ومرادفاتها في ملفات متعددة باستخدام Java.

فيما يلي المواضيع التي يتم تناولها أدناه:

Java API - بحث عن المرادفات في ملفات متعددة

GroupDocs.Search يعرض Java API GroupDocs.Search for Java. يسمح بالبحث عن الكلمات ومرادفاتها في ملفات متعددة مختلفة للمجلد المحدد. يدعم قائمة طويلة من تنسيقات الملفات المختلفة و تقنيات بحث متنوعة. بعض هذه الميزات مذكورة أدناه ويمكنك استخدامها معًا لتحقيق هدفك:

  • البحث المنطقي
  • بحث حساس لحالة الأحرف
  • تسليط الضوء على نتائج البحث
  • بحث Homophone
  • البحث بالعبارة
  • البحث عن التعبيرات العادية
  • البحث عن طريق القطع
  • بحث المرادفات

تنزيل أو تكوين

يمكنك تنزيل ملف JAR من قسم التنزيلات ، أو الحصول على أحدث تكوينات المستودعات والتبعية لملف pom.xml لتطبيقات Java المستندة إلى المخضرم.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>

البحث عن المرادفات في ملفات متعددة باستخدام Java

دعنا ننتقل بسرعة إلى البحث عن المرادفات داخل الملفات. توضح الخطوات التالية كيفية البحث عن المرادفات (الكلمات ذات المعاني المتشابهة) في الملفات داخل مجلد باستخدام Java:

  • حدد مجلد الفهرس ومجلد المستند والاستعلام (الكلمة المراد البحث عنها).
  • قم بإنشاء فهرس باستخدام مجلد فهرس محدد باستخدام فئة الفهرس.
  • أضف مجلد المستندات إلى الفهرس.
  • تمكين البحث عن المرادفات باستخدام خيارات البحث.
  • قم باستدعاء طريقة البحث لفئة الفهرس وتمرير الاستعلام بخيارات البحث.
  • اطبع الملخص باستخدام خصائص فئة SearchResult المسترجعة.

يوضح كود المصدر التالي كيفية العثور على جميع المرادفات داخل الملفات باستخدام Java:

// ابحث عن المرادفات في ملفات ومجلدات متعددة باستخدام Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// إنشاء فهرس في المجلد المحدد
Index index = new Index(indexFolder);
index.add(documentsFolder);

// إنشاء كائن خيارات البحث
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// ابحث عن كلمة "Make"
// بالإضافة إلى كلمة "make" ، سيتم أيضًا البحث عن المرادفات "do، get، have، ..."
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

ما يلي هو إخراج الكود أعلاه:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

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

  • أولاً ، قم بإجراء البحث للحصول على SearchResult.
  • اقلب نتيجة البحث للعمل مع كل FoundDocument.
  • طباعة الخصائص repective لكل FoundDocument.
  • الآن ، قم باستخراج FoundDocumentField ثم اجتيازه داخل كل FoundDocument.
  • كل FoundDocumentField له شروطه ، وتكراراته ، وخصائص أخرى فيه. استخدم حاصدة خاصة.

يعرض رمز المصدر التالي نتيجة البحث عن المرادفات مع عدد مرات حدوث كل مصطلح تم البحث عنه في Java.

// طباعة نتائج البحث عن المرادفات في Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

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

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // وجدت الطباعة حيث وجدت
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

ما يلي هو إخراج الكود أعلاه:

Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

مرادفات البحث ونتائج الطباعة في Java - أكمل التعليمات البرمجية

دعنا نجمع الخطوتين السابقتين ، لذلك ها هي الكود المصدري الكامل. أولاً ، يعثر على جميع المرادفات وفقًا للاستعلام المقدم. بعد ذلك ، يقوم بطباعة جميع تكرارات كل مرادف في كل مستند في Java.

// ابحث عن المرادفات في ملفات ومجلدات متعددة باستخدام Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// إنشاء فهرس في المجلد المحدد
Index index = new Index(indexFolder);
index.add(documentsFolder);

// إنشاء كائن خيارات البحث
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// ابحث عن كلمة "Make"
// بالإضافة إلى كلمة "make" ، سيتم أيضًا البحث عن المرادفات "do، get، have، ..."
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

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

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // وجدت الطباعة حيث وجدت
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

احصل على ترخيص API مجاني

يمكنك الحصول على ترخيص مؤقت مجاني من أجل استخدام واجهة برمجة التطبيقات بدون قيود التقييم.

استنتاج

للتلخيص ، ناقشنا كيفية البحث عن أي كلمة مع مرادفها في مستندات متعددة باستخدام Java. الأهم من ذلك ، يمكنك الآن محاولة تطوير تطبيق Java الخاص بك للبحث تمامًا مثل GroupDocs.Search App.

تعرف على المزيد حول Java Search Automation API من الوثائق. لتجربة الميزات ، جرب أمثلة من مستودع GitHub. لا تتردد في التواصل معنا لأي استفسار عبر المنتدى.

أنظر أيضا