לאחרונה דנו, כיצד להשיג את כל המילים הנרדפות של כל מילה. זה יהיה נפלא אם נוכל לאתר מילים נרדפות אלה בתוך מסמכים רבים ושונים. במאמר זה נראה כיצד לחפש כל מילה והמילים הנרדפות שלה במספר קבצים באמצעות Java.

להלן הנושאים המכוסים להלן:

Java API - חפש מילים נרדפות במספר קבצים

GroupDocs.Search מציג את Java API GroupDocs.Search for Java. זה מאפשר חיפוש מילים והמילים הנרדפות שלהן במספר קבצים שונים של התיקיה שצוינה. הוא תומך ברשימה ארוכה של פורמטים שונים של קבצים וטכניקות חיפוש שונות. חלק מהתכונות הללו מוזכרות להלן ותוכל להשתמש בהן בשילוב כדי להשיג את היעד שלך:

  • חיפוש בוליאני
  • חיפוש תלוי רישיות
  • הדגש את תוצאות החיפוש
  • חיפוש הומופונים
  • חיפוש ביטויים
  • חיפוש ביטויים רגילים
  • חפש לפי צ’אנקס
  • חיפוש מילים נרדפות

הורד או הגדר

אתה יכול להוריד את קובץ ה-JAR מסעיף ההורדות, או פשוט לקבל את תצורות המאגר והתלות העדכניות ביותר עבור ה-pom.xml של יישומי Java המבוססים על maven.

<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:

  • הגדר את תיקיית האינדקס, תיקיית המסמך והשאילתה (המילה לחיפוש).
  • צור אינדקס באמצעות תיקיית אינדקס מוגדרת באמצעות המחלקה Index.
  • הוסף את תיקיית המסמכים לאינדקס.
  • הפעל את חיפוש מילים נרדפות באמצעות SearchOptions.
  • התקשר לשיטת search של מחלקה אינדקס והעביר את השאילתה עם אפשרויות חיפוש.
  • הדפס את הסיכום באמצעות המאפיינים של המחלקה 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

// חפש את המילה 'לעשות'
// בנוסף למילה 'לעשות', ייחפשו גם המילים הנרדפות 'עשה, קבל, יש, ...'
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.
  • הדפס את המאפיינים המתאימים של כל 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

// חפש את המילה 'לעשות'
// בנוסף למילה 'לעשות', ייחפשו גם המילים הנרדפות 'עשה, קבל, יש, ...'
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 בחינם

אתה יכול לקבל רישיון זמני בחינם על מנת להשתמש ב-API ללא מגבלות ההערכה.

סיכום

לסיכום, דנו כיצד לחפש כל מילה יחד עם המילה הנרדפת שלה במספר מסמכים באמצעות Java. והכי חשוב, עכשיו אתה יכול לנסות לפתח אפליקציית Java משלך לחיפוש בדיוק כמו GroupDocs.Search App.

למידע נוסף על Java Search Automation API מהתיעוד. כדי לחוות את התכונות, נסה דוגמאות מהמאגר GitHub. אל תהסס לפנות אלינו לכל שאלה דרך הפורום.

ראה גם