במאמר אחר, ראינו שמה הן מילים נרדפות, ו[איך להשיג את כל המילים הנרדפות של כל מילה]. מה לגבי מציאת מילים נרדפות אלה בתוך מסמכים שונים? מאמר זה ידריך אותך כיצד לחפש מילים נרדפות של כל שאילתה (מילה) ספציפית במספר קבצים באמצעות C#.

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

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

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

  • חיפוש מטושטש
  • חיפוש תלוי רישיות
  • חיפוש הומופונים
  • חיפוש ביטויים רגילים
  • חיפוש Wild Card

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

PM> Install-Package GroupDocs.Search

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

השלבים מראים כיצד לחפש מילים נרדפות (מילים בעלות משמעויות דומות) בקבצים בתוך תיקיה באמצעות C#.

  • הגדר את שאילתת החיפוש, תיקיית האינדקס ותיקיית המסמך.
  • צור אינדקס עם תיקיית אינדקס מוגדרת באמצעות המחלקה Index.
  • הוסף את תיקיית המסמך לאינדקס.
  • צור את SearchOptions והגדר את UseSynonymSearch כ-true.
  • התקשר לשיטת Search של מחלקה אינדקס והעביר את השאילתה ואפשרויות החיפוש.
  • כדי להדפיס את הסיכום, השתמש במאפיינים של SearchResult שאוחזר.

קוד המקור מראה כיצד למצוא את כל המילים הנרדפות בתוך כל הקבצים של תיקיה באמצעות C#

// חפש מילים נרדפות במספר קבצים ותיקיות באמצעות C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// יצירת אינדקס בתיקייה שצוינה
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// יצירת אובייקט אפשרויות חיפוש
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search

// חפש את המילה 'לעשות'
// בנוסף למילה 'לעשות', ייבדקו גם המילים הנרדפות "עשה, גורם, קבל, ..."
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Query: **make**
Documents: 2
Occurrences: 22

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

  • חצו את תוצאות החיפוש שאוחזרו באמצעות הקוד שלמעלה.
  • קבל כל FoundDocument בשיטת GetFoundDocument.
  • הדפס את המאפיינים הרלוונטיים של כל FoundDocument.
  • חצו את FoundFields בתוך כל FoundDocument כדי לקבל Found Document Field.
  • מכל FoundDocumentField, אתה יכול לקבל את התנאים שלו ואת ספירת ההתרחשויות שלו בתוך כל מסמך.

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

// הדפסת תוצאות החיפוש של מילים נרדפות ב-C#
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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]);
            }
        }
    }
}
Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 6
    Field: content
    Occurrences: 6
        make             1
        get                 2
        cause            1
        do                  2
Document: C:/documents/sample.txt
Occurrences: 16
    Field: content
    Occurrences: 16
        get                  4
        cause             1
        do                  11

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

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

// חפש מילים נרדפות במספר קבצים ותיקיות והדפס את התוצאות באמצעות C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// יצירת אינדקס בתיקייה שצוינה
Index index = new Index(indexFolder);
// הוספת מסמכים לאינדקס מהתיקייה שצוינה
index.Add(documentsFolder);

// יצירת אובייקט אפשרויות חיפוש
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search

// חפש את המילה 'לעשות'
// בנוסף למילה 'לעשות', ייבדקו גם המילים "עשה, גורם, קבל, ...".
SearchResult result = index.Search(query, options);

// הדפסת התוצאה
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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]);
            }
        }
    }
}

סיכום

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

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

ראה גם