חיפוש טקסט מלא במסמכים

לעתים קרובות אנו זקוקים ל-API לחיפוש טקסט מלא המאפשר ליישומים שלנו לחפש במסמכים מידע מסוים שצוין כשאילתת חיפוש טקסטואלית. המסמכים יכולים להיות בכל פורמט כגון Word (Doc, Docx), PDF, HTML, EPUB, גיליון אלקטרוני (XLS, XLSX), מצגת (PPT, PPTX), תמונות וסרטונים.

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

מדוע להשתמש ב-GroupDocs.Search כמפתח?

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

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

הַתקָנָה

GroupDocs.Search for .NET מתארח ב-NuGet וניתן להתקין אותו בקלות באמצעות מנהל החבילות של NuGet. לחלופין, אתה יכול להוריד את ה-DLL של ה-API מהקטע הורדות.

חיפוש במסמכי Office באמצעות C#

השלבים הבאים מסבירים כיצד לחפש מילים או ביטויים במספר מסמכים (Word, Excel, PDF ופורמטים אחרים של מסמכים).

  • צור אינדקס חדש: קודם כל, עליך ליצור אינדקס. ניתן ליצור אינדקס בזיכרון או בדיסק. אינדקס שנוצר בזיכרון לא ניתן לשמור לאחר יציאה מהתוכנית שלך. לעומת זאת, אינדקס שנוצר בדיסק עשוי להיטען בעתיד כדי להמשיך לעבוד. פרטים על יצירת אינדקס מתוארים בסעיף יצירת אינדקס.
  • הירשם לאירועי אינדקס: לאחר יצירת אינדקס, עליך להוסיף מסמכים לאינדקס לצורך הוספה לאינדקס. יצירת אינדקס של מסמכים יכולה להצליח או לא להצליח מסיבות שונות, למשל עקב שגיאות קריאה מהדיסק או נוכחות של סיסמה לגישה למסמך. כדי לקבל מידע על שגיאות אינדקס, אתה יכול להירשם לאירוע ErrorOccurred. לעבודה עם אירועים, עיין בסעיף חיפוש אירועי אינדקס.
  • אינדקס מסמכים: ניתן לבצע אינדקס מסמכים באופן סינכרוני או אסינכרוני. אינדקס סינכרוני פירושו שרשור שהתחיל את תהליך האינדקס יהיה תפוס עד להשלמת הפעולה. עם זאת, לעתים קרובות יותר, יש צורך לבצע אינדקס באופן אסינכרוני, עם יכולת לבצע משימות אחרות בשרשור שהשיק את הפעולה. תיאור מפורט של כל ההיבטים של תהליך ההוספה לאינדקס ניתן בסעיף אינדקס.
  • בצע חיפוש: כאשר מסמכים מתווספים לאינדקס, האינדקס מוכן לטפל בשאילתות חיפוש. הסוגים הבאים של שאילתות חיפוש נתמכים: פשוטים, מטושטשים, רגישים לאותיות גדולות, בוליאניות, ביטויים, היבטים, עם תווים כלליים ואחרים. תיאור של שאילתות חיפוש מסוגים שונים מוצג בסעיף חיפוש.
  • השתמש בתוצאות חיפוש: כאשר חיפוש הושלם, אתה צריך איכשהו לפרש תוצאה. התוצאה יכולה להיות מיוצגת על ידי רשימה פשוטה של מסמכים שנמצאו, או שניתן להדגיש את המילים והביטויים שנמצאו בטקסט של המסמך. למידע נוסף על עיבוד תוצאות חיפוש, ראה תוצאות חיפוש.
string indexFolder = @"/Users/muhammadsohailismail/MyIndex/"; // Specify the path to the index folder
string documentsFolder = @"/Users/muhammadsohailismail/MyDocuments/"; // Specify the path to a folder containing documents to search

// a) Create new index or
// b) Open existing index
Index index = new Index(indexFolder);

// c) Subscribe to index events
index.Events.ErrorOccurred += (sender, args) =>
{
    Console.WriteLine(args.Message); // Writing error messages to the console
};

// d) Add files synchronously
index.Add(documentsFolder); // Synchronous indexing documents from the specified folder

// f) Perform search
string query = "Worthy"; // Specify a search query
SearchResult result = index.Search(query); // Searching in the index

// g) Use search results
// Printing the result
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\\tOccurrences: " + document.OccurrenceCount);
}

// Highlight occurrences in text
if (result.DocumentCount > 0)
{
    FoundDocument document = result.GetFoundDocument(0); // Getting the first found document
    string path = @"/Users/muhammadsohailismail/Output/Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter object
    index.Highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    Console.WriteLine();
    Console.WriteLine("Generated HTML file can be opened with Internet browser.");
    Console.WriteLine("The file can be found by the following path:");
    Console.WriteLine(Path.GetFullPath(path));
}

הקוד שלמעלה יוצר את הפלט הבא ואת קובץ HTML.

חפש בשדות של מסמכים באמצעות C#

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

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
SearchResult result1 = index.Search("content: Einstein");
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Einstein");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

שימוש בשדות ספציפיים לפורמט

עבור כל פורמט מסמך, ישנם שדות סטנדרטיים שעשויים להופיע במסמכים מסוג זה. הספרייה מספקת את המחלקות הבאות המכילות קבועים עם שמות של שדות מסמכים סטנדרטיים: EpubFieldNames, FictionBookFieldNames, MailFieldNames, PresentationFieldNames, SpreadsheetFieldNames , WordsFieldNames.

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

דוגמה לשימוש בשמות שדות סטנדרטיים של מסמכים מוצגת בדוגמה הבאה.

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
string query1 = WordsFieldNames.Company + ": Dycum";
SearchResult result1 = index.Search(query1);
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Dycum");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(WordsFieldNames.Company, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

מידע מפורט על חיפוש היבטים מוצג בעמוד חיפוש היבטים.

סיכום

מאמר זה הסביר כיצד לחפש במסמכים (DOCX, PDF, Excel, קבצי טקסט) עבור מידע מסוים ב-C#. כמו כן, הוסבר כיצד לחפש בתחומי המסמכים. GroupDocs.Search מכיל מספר תכונות אחרות, אנא עיין בתיעוד כדי ללמוד עוד על זה.