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

API של C# לסריקת טקסט בין קבצים ותיקיות

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

יש לך אפשרות לתפוס את קובצי ה-DLL או את תוכנית ההתקנה של MSI מ סעיף ההורדות, או שאתה יכול להתקין את ה-API באפליקציית NET שלך באמצעות NuGet.

PM> Install-Package GroupDocs.Search

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

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

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

// יצירת אינדקס והוספת מסמכים מהתיקייה שצוינה
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// חפש מסמכים המכילים את המילה 'מים' או 'לא' או את הביטוי 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// הדפסת התוצאה
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // הדגש את תוצאות החיפוש
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

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

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

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

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

// הדפסת התוצאה
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
   for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // הדפסת מונחים שנמצאו
        if (field.Terms != null)
        {
           for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // הדפסת ביטויים שנמצאו
        if (field.TermSequences != null)
        {
           for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

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

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

קוד מלא

להלן קוד C# המלא שמחפש ביחד את מחרוזות הטקסט והביטויים במספר קבצים ותיקיות:

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

// יצירת אינדקס והוספת מסמכים מהתיקייה שצוינה
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// חפש מסמכים המכילים את המילה 'מים' או 'לא' או את הביטוי 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// הדפסת התוצאה
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // הדגש את תוצאות החיפוש
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
   for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // הדפסת מונחים שנמצאו
        if (field.Terms != null)
        {
           for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // הדפסת ביטויים שנמצאו
        if (field.TermSequences != null)
        {
           for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

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

רישיון חינם

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

ניסיון חינם

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

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

סיכום

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

לפרטים מקיפים על ה-API, מומלץ לקוראים לעיין בתיעוד.

כל פניה או דיון נוסף ניתן להפנות ל[פורום] הזמין 7.


ראה גם