האם אי פעם תהיתם איך לחפש בקלות בהרבה קבצים או לנווט באתגר של חיפוש בתוך קבצים בתיקיות שונות? במאמר זה יש את התשובות שאתה מחפש. בואו נצלול לתוך עולם חיפוש הטקסט ונחקור כיצד לחפש טקסטים או ביטויים שונים בקבצים שונים בתיקיות מגוונות באמצעות 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 מודגשים עבור כל מסמך שנמצא.
הדפסת תוצאות חיפוש הטקסט
מתוצאת שאילתת החיפוש, תוכל לחלץ מידע נוסף על המסמכים שנמצאו.
// הדפסת התוצאה
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]);
}
}
}
}
קבלת רישיון חינם או ניסיון חינם
רישיון חינם
השג רישיון זמני בחינם כדי לחקור את הספרייה הזו ללא מגבלות.
ניסיון חינם
אתה יכול להוריד את גרסת הניסיון ללא תשלום מקטע ההורדות.
סיכום
במאמר זה, חקרנו סריקת טקסט לחיפוש טקסטים שונים במספר קבצים על פני מספר תיקיות באמצעות C#. החל בשאילתת החיפוש, בדקנו בתוך מספר קבצים ותיקיות, והדגשנו את המילים או הביטויים שחיפשו בקבצי ה-HTML המתאימים.
לפרטים מקיפים על ה-API, מומלץ לקוראים לעיין בתיעוד.
כל פניה או דיון נוסף ניתן להפנות ל[פורום] הזמין 7.