חיפוש מטושטש באמצעות Java

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

הנה כמה דוגמאות לפרט את תוכן דוגמת החיפוש המעורפל:

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

הפתרון למציאת תוכן כזה הוא Fuzzy Search.

ספריית חיפוש מטושטשת של Java

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

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

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

כדי להתחיל, אתה יכול לתפוס את ה-API מקטע ההורדה, או פשוט להוסיף את תצורות המאגר והתלות העדכניות ביותר של Maven ישירות ליישומי Java שלך.

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

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

  1. התחל ביצירת אינדקס באמצעות התיקיה שבה נמצאים הקבצים שלך.
  2. הוסף את נתיב התיקיה הראשית לאינדקס.
  3. ספק את שאילתת החיפוש שברצונך לחפש.
  4. הפעל את הקסם של Fuzzy Search כך שהוא יבין טעויות קטנות.
  5. הגדר את רמת הדמיון באלגוריתם המטושטש.
  6. בצע את החיפוש באמצעות שיטת החיפוש כדי לקבל את תוצאות החיפוש.
  7. כעת, אתה יכול לעבור בין תוצאות חיפוש כדי ליצור או להדפיס את הפלט כרצונך.

בקוד ה-Java למטה, התוכנית מחפשת תוכן דומה שהוא סוג של מה שביקשת בכל הקבצים ותיקיות המשנה. זה סובלני לשגיאות כתיב, עד 25% שגיאות. אם תציצו בקוד, תראו שרמת הדמיון מוגדרת ל-0.75, שזה שווה ערך להתאמה של 75%. אם אתה רוצה לכוונן את החיפוש, פשוט שנה את רמת הדמיון בקוד.

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

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

SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));

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

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

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

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

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

  • הדגש את כל ההתאמות המשוערות.
  • הדפס את התוצאות בפורמט קריא וניתן לניתוח
// הדגש והדפיס תוצאות חיפוש עבור כל המסמכים באמצעות Java
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
   for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // הדפסת מונחים שנמצאו
        if (field.getTerms() != null) {
           for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}

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

רישיון חינם

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

ניסיון חינם

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

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

סיכום

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

למידע נוסף על ה-API, עיין בתיעוד.

אם יש לך שאלות או רוצה לדון יותר, פנה אל הפורום.


ראה גם