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

Java API לסריקת טקסט בין קבצים ותיקיות

היום, נשתמש ב-GroupDocs.Search for Java API כדי לחפש טקסטים מרובים בתוך קבצים בפורמטים שונים של קבצים בתיקיות. ספרייה זו מאפשרת לנו לסרוק את הטקסט באופן פרוגרמטי בתוך מגוון גדול של פורמטים של קבצים עבור מסמכי Word, גיליונות אלקטרוניים, מצגות, קובצי PDF, קובצי סימון, ספרים אלקטרוניים, הודעות דואר אלקטרוני, מסמכי One Note וארכיוני ZIP. התיעוד מספק רשימה מפורטת של פורמטי קבצים נתמכים.

אתה יכול להוריד את קובץ ה-JAR מקטע ההורדות או להשתמש בתצורות המאגר והתלות העדכניות של Maven בתוך יישומי Java שלך.

חיפוש טקסטים מרובים בקבצים על פני תיקיות באמצעות Java

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

  • צור אובייקט אינדקס עם נתיב תיקיית האינדקס שצוין.
  • אינדקס את תיקיית מסמך האב באמצעות שיטת ההוספה.
  • הגדר שאילתת חיפוש עם מספר מונחים או ביטויים.
  • בצע את סריקת הטקסט בשיטת החיפוש ואחסן את התוצאות.
  • חזור על תוצאות החיפוש:
    • גש לכל מסמך שנמצא באמצעות שיטת getFoundDocument.
    • גש או הדפס כל מידע על הקובץ עבור המסמך שנמצא.
    • הגדר OutputAdapter עבור הפורמט והנתיב הרצויים.
    • צור מדגיש עבור המסמך.
    • הדגש ופלט את תוצאות החיפוש לקובץ HTML בשיטת ההדגשה.
// חיפוש טקסט במספר קבצים בפורמטים שונים של קבצים בתוך תיקיות מרובות באמצעות Java

// יצירת אינדקס בתיקייה שצוינה
Index index = new Index("path/for/indexingFolder");

// הוספת מסמכים לאינדקס מהתיקייה שצוינה
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("====================================");
    System.out.println("File Name: " + document.getDocumentInfo().getFilePath());

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
}

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

תוצאות חיפוש טקסט מודגשות בפורמט HTML

הדפסת תוצאות חיפוש הטקסט

מתוצאת שאילתת החיפוש, תוכל לחלץ מידע נוסף על המסמכים שנמצאו.

// הדפסת תוצאות חיפוש ===

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
 
    // הדפסת תוצאות חיפוש ===========
    System.out.println("Occurrences: " + document.getOccurrenceCount());
   for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // הדפסת מונחים שנמצאו
        if (field.getTerms() != null) {
           for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // הדפסת ביטויים שנמצאו
        if (field.getTermSequences() != null) {
           for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
               for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
            }
        }
    }
}

להלן הפלט של הדפסת תוצאות החיפוש לעיל המתקבלות מקובצי DOCX, PDF ו-TXT:

File Name: Lorem ipsum.docx
Occurrences: 101
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 100
		non - 94
		lorem ipsum  - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
	Field: filename
	Occurrences: 1
		lorem ipsum  - 1
	Field: content
	Occurrences: 59
		non - 53
		lorem ipsum  - 6
====================================
File Name: English.txt
Occurrences: 39
	Field: content
	Occurrences: 39
		water - 39

קוד מלא

הנה קוד ה-Java המלא שמחפש ביחד את מחרוזות הטקסט והביטויים במספר קבצים ותיקיות:

// חיפוש טקסט במספר קבצים בפורמטים שונים של קבצים בתוך תיקיות מרובות באמצעות Java

// יצירת אינדקס בתיקייה שצוינה
Index index = new Index("path/for/indexingFolder");

// הוספת מסמכים לאינדקס מהתיקייה שצוינה
index.add("path/parent-folder/");

String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);

for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("====================================");
    System.out.println("File Name: " + document.getDocumentInfo().getFilePath());

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
  
    // הדפסת תוצאות חיפוש ============
    System.out.println("Occurrences: " + document.getOccurrenceCount());
   for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + field.getOccurrenceCount());

        // הדפסת מונחים שנמצאו
        if (field.getTerms() != null) {
           for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
        // הדפסת ביטויים שנמצאו
        if (field.getTermSequences() != null) {
           for (int k = 0; k < field.getTermSequences().length; k++) {
                String[] terms = field.getTermSequences()[k];
                String sequence = "";
               for (String term : terms) {
                    sequence += term + " ";
                }
                System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
            }
        }
    }  
}

קבלת רישיון חינם או ניסיון חינם

רישיון חינם

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

ניסיון חינם

הורד את גרסת הניסיון ללא תשלום ממדור ההורדות.

Java API לחיפוש בתוך קבצים ותיקיות

סיכום

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

למידע מפורט על API, הקוראים מוזמנים לעיין בתיעוד. ניתן להפנות שאלות ודיונים נוספים לפורום המסופק.


ראה גם