ما اغلب به یک API جستجوی متن کامل نیاز داریم که برنامههای ما را قادر میسازد تا در اسناد برای اطلاعات خاصی که به عنوان جستجوی متنی مشخص شدهاند جستجو کنند. اسناد می توانند از هر فرمتی مانند Word (Doc، Docx)، PDF، HTML، EPUB، صفحه گسترده (XLS، XLSX)، ارائه (PPT، PPTX)، تصاویر و ویدیوها باشند.
GroupDocs.Search یک API جستجوی متن کامل قدرتمند است که به شما امکان میدهد در برنامههای خود در میان بیش از ۷۰ قالب سند جستجو کنید. برای ایجاد امکان جستجوی فوری در هزاران سند، باید آنها را به فهرست اضافه کرد.
چرا از GroupDocs.Search به عنوان یک توسعه دهنده استفاده کنیم؟
- هیچ نرم افزار اضافی برای جستجو در اسناد با فرمت های پشتیبانی شده مورد نیاز نیست.
- تنوع زیادی از گزینه های فهرست بندی و جستجو برای برآورده کردن هر نیازی ارائه شده است.
- طیف گسترده ای از انواع جستجو در پرس و جوهای متن یا شیء موجود است.
- نمایه سازی و عملکرد جستجوی بالا با الگوریتم ها و ساختارهای داده منحصر به فرد، بهینه سازی ها و اجرای چند رشته ای به دست می آید.
- روش های مختلفی برای تجسم نتایج جستجو در متن اسناد پشتیبانی می شود.
لطفاً مقاله About Search Engines را بررسی کنید تا بدانید GroupDocs.Search API چه جایگاهی در طبقه بندی موتورهای جستجو دارد.
نصب و راه اندازی
GroupDocs.Search for .NET در NuGet میزبانی می شود و می توان آن را به راحتی با استفاده از NuGet Package Manager نصب کرد. همچنین، میتوانید DLL API را از بخش دانلودها دانلود کنید.
جستجو از طریق اسناد آفیس با استفاده از سی شارپ
مراحل زیر نحوه جستجوی کلمات یا عبارات را در چندین سند (ورد، اکسل، PDF و سایر فرمتهای سند) توضیح میدهد.
- ایجاد یک نمایه جدید: اول از همه، باید یک شاخص ایجاد کنید. ایندکس را می توان در حافظه یا روی دیسک ایجاد کرد. ایندکس ایجاد شده در حافظه پس از خروج از برنامه شما قابل ذخیره نیست. در مقابل، ممکن است یک شاخص ایجاد شده روی دیسک در آینده برای ادامه کار بارگذاری شود. جزئیات ایجاد یک نمایه در بخش ایجاد یک نمایه توضیح داده شده است.
- اشتراک در رویدادهای فهرست: پس از ایجاد نمایه، باید اسنادی را برای نمایه سازی به فهرست اضافه کنید. نمایه سازی اسناد می تواند به دلایل مختلفی موفقیت آمیز یا ناموفق باشد، به عنوان مثال، به دلیل خطاهای خواندن از دیسک یا وجود رمز عبور برای دسترسی به یک سند. برای دریافت اطلاعات در مورد خطاهای نمایه سازی، می توانید در رویداد ErrorOccurred مشترک شوید. برای کار با رویدادها، به بخش [جستجوی رویدادهای فهرست 7 مراجعه کنید.
- اسناد شاخص: نمایه سازی اسناد می تواند به صورت همزمان یا ناهمزمان انجام شود. نمایه سازی همزمان به این معنی است که رشته ای که فرآیند نمایه سازی را آغاز کرده است تا زمانی که عملیات تکمیل شود مشغول خواهد بود. با این حال، بیشتر اوقات، لازم است نمایه سازی به صورت ناهمزمان انجام شود، با قابلیت اجرای سایر وظایف در رشته ای که عملیات را راه اندازی کرده است. شرح مفصلی از تمام جنبه های فرآیند نمایه سازی در بخش [نمایه سازی] ارائه شده است.
- انجام جستجو: هنگامی که اسناد نمایه می شوند، نمایه برای رسیدگی به درخواست های جستجو آماده است. انواع جست و جوهای زیر پشتیبانی می شوند: ساده، فازی، حساس به حروف بزرگ، منطقی، عبارتی، وجهی، با حروف عام و غیره. شرح سوالات جستجو در انواع مختلف در بخش [جستجو] ارائه شده است.
- استفاده از نتایج جستجو: هنگامی که جستجو کامل شد، باید به نحوی نتیجه را تفسیر کنید. نتیجه را می توان با یک لیست ساده از اسناد یافت شده نشان داد، یا کلمات و عبارات یافت شده را می توان در متن سند برجسته کرد. برای اطلاعات بیشتر در مورد پردازش نتایج جستجو، به نتایج جستجو مراجعه کنید.
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 را تولید می کند.
جستجو در فیلدهای اسناد با استفاده از سی شارپ
جستجوی وجهی فیلتر کردن نتایج جستجو با تنظیم نام فیلدهای سند معتبر برای جستجو است. جستجوی وجهی به شما امکان می دهد فقط در زمینه های خاصی از اسناد جستجو کنید، به عنوان مثال، فقط در قسمت محتوا یا در قسمت نام فایل. یک مثال جستجوی ساده وجهی در زیر با پرس و جوها به صورت متن و شی ارائه شده است.
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 دارای چندین ویژگی دیگر است، لطفاً مستندات را بررسی کنید تا در مورد آن بیشتر بدانید.