חיפוש מטושטש באמצעות C# .NET
  • אינך יודע באיזה צבע או באיות צבע נעשה שימוש במסמך.
  • מחפש “ג’ון”, אבל זה יכול להיות מאויית כ"ג’ון" או אולי “ג’ון”.
  • איתור “ארה"ב” כאשר המשתמש מזין “ארה"ב”.
  • למילה או לביטוי שאתה מחפש יכול להיות “טעות”, אופס זו שוב “טעות”.

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

C# ספריית חיפוש מטושטשת

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

ספרייה זו מאפשרת לנו לחפש טקסט באופן פרוגרמטי במגוון רחב של פורמטים של קבצים, כגון מסמכי Word (DOC, DOCX), גיליונות אלקטרוניים (XLS, XLSX), מצגות (PPT, PPTX), קבצי PDF, Markup (HTML, XML), Markdown (MD), eBooks (EPUB, CHM, FB2), הודעות דואר אלקטרוני (MSG, EML), מסמכי OneNote וארכיוני ZIP.

כדי לגלות את כל סוגי הקבצים שאתה יכול לעבוד איתם, עיין בתיעוד.

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

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

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

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

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

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

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

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

כאן, רמת הדמיון מוגדרת ל-0.8 כלומר התאמה של 80% מה שמתאים לסובלנות של 20% לשגיאות. אתה יכול להתאים את רמת הסובלנות על ידי כוונון רמת הדמיון בקוד.

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

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

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

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

  • הדגש את כל ההתאמות המשוערות.
  • הדפס את התוצאות בפורמט קריא וניתן לניתוח
// הדגש והדפיס תוצאות חיפוש עבור כל המסמכים באמצעות C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
   for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // הדפסת מונחים שנמצאו
        if (field.Terms != null)
        {
           for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

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

רישיון חינם

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

ניסיון חינם

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

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

סיכום

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

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

כל שאילתה או דיון נוסף ניתן להפנות אל הפורום.


ראה גם