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

חפש הומופונים בקבצים באמצעות GroupDocs

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

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

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

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

אתה יכול להוריד את קובצי ה-DLL או ה-MSI מתקין מקטע ההורדות או להתקין את ה-API באפליקציית NET שלך דרך [NuGet](https://www.nuget.org /packages/groupdocs.search).

PM> Install-Package GroupDocs.Search

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

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

  • הגדר את שאילתת החיפוש, תיקיית אינדקס והתיקיה המכילה את הקבצים שלך.
  • צור אינדקס עם תיקיית האינדקס שהוגדרה.
  • הוסף את תיקיית המסמך לאינדקס שנוצר.
  • הגדר את SearchOptions והגדר את [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) ל-true.
  • חפש בכל ההומפונים על ידי קריאה לשיטת Search עם אפשרויות השאילתה והחיפוש.
  • השתמש בסיכום באמצעות המאפיינים של SearchResult.

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

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

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

// יצירת אובייקט אפשרויות חיפוש
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

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

הפלט של הקוד לעיל הוא כדלקמן:

Query: **right**
Documents: 2
Occurrences: 17

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

  • חצו את תוצאות החיפוש ההומופונים שאוחזרו קודם לכן.
  • קבל כל מסמך כ-FoundDocument באמצעות [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • השתמש במאפיינים של כל FoundDocument כנדרש.
  • כעת, חצו את FoundFields של FoundDocument כדי לקבל את [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
  • לבסוף, מכל 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: **right**
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

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

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

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

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

// יצירת אובייקט אפשרויות חיפוש
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone 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 משלך לחיפוש הומופונים בתוך קבצים מרובים באמצעות GroupDocs.Search for .NET.

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

ראה גם