البحث عن النص الكامل للوثائق

نحتاج غالبًا إلى واجهة برمجة تطبيقات بحث نص كامل تمكن تطبيقاتنا من البحث في المستندات عن معلومات معينة محددة كاستعلام بحث نصي. يمكن أن تكون المستندات بأي تنسيق مثل Word (Doc و Docx) و PDF و HTML و EPUB وجداول البيانات (XLS و XLSX) والعرض التقديمي (PPT و PPTX) والصور ومقاطع الفيديو.

GroupDocs.Search هي واجهة برمجة تطبيقات قوية للبحث عن النص الكامل تتيح لك البحث من خلال أكثر من 70 تنسيقًا للمستندات في تطبيقاتك. لإتاحة البحث الفوري عبر آلاف المستندات ، يجب إضافتها إلى الفهرس.

لماذا استخدم GroupDocs.Search كمطور؟

  • لا يلزم وجود برامج إضافية للبحث في المستندات ذات التنسيقات المدعومة.
  • يتم توفير مجموعة كبيرة ومتنوعة من خيارات الفهرسة والبحث لتلبية أي متطلبات.
  • تتوفر مجموعة كبيرة من أنواع البحث في الاستعلامات النصية أو استعلامات نموذج الكائن.
  • يتم تحقيق أداء عالي في الفهرسة والبحث من خلال خوارزميات فريدة وهياكل بيانات وتحسينات وتنفيذ متعدد الخيوط.
  • يتم دعم طرق مختلفة لتصور نتائج البحث في نص المستندات.

يرجى مراجعة مقالة حول محركات البحث لمعرفة المكان الذي تحتله GroupDocs.Search API في تصنيف محركات البحث.

تثبيت

GroupDocs.Search for .NET مستضافة على NuGet ويمكن تثبيتها بسهولة باستخدام NuGet Package Manager. بدلاً من ذلك ، يمكنك تنزيل DLL الخاصة بواجهة برمجة التطبيقات من قسم التنزيلات.

البحث من خلال مستندات 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 على العديد من الميزات الأخرى ، يرجى مراجعة التوثيق لمعرفة المزيد عنها.