Dokümanların tam metin araması

Genellikle, uygulamalarımızın bir metin arama sorgusu olarak belirtilen belirli bilgileri belgelerde aramasını sağlayan bir tam metin arama API’sine ihtiyaç duyarız. Belgeler, Word (Doc, Docx), PDF, HTML, EPUB, Elektronik Tablo (XLS, XLSX), Sunum (PPT, PPTX), resimler ve videolar gibi herhangi bir formatta olabilir.

GroupDocs.Search, uygulamalarınızda 70’in üzerinde belge biçimi arama yapmanızı sağlayan güçlü bir tam metin arama API’sidir. Binlerce belge arasında anında arama yapabilmek için bunların dizine eklenmesi gerekir.

Neden GroupDocs.Search’ü Geliştirici Olarak Kullanmalı?

  • Desteklenen biçimlerdeki belgelerde arama yapmak için ek yazılım gerekmez.
  • Herhangi bir gereksinimi karşılamak için çok çeşitli indeksleme ve arama seçenekleri sağlanmıştır.
  • Metin veya nesne formu sorgularında çok çeşitli arama türleri mevcuttur.
  • Benzersiz algoritmalar ve veri yapıları, optimizasyonlar ve çok iş parçacıklı yürütme ile yüksek indeksleme ve arama performansı elde edilir.
  • Belge metninde arama sonuçlarını görselleştirmenin çeşitli yolları desteklenir.

GroupDocs.Search API’nin arama motorları sınıflandırmasında nasıl bir yer kapladığını öğrenmek için lütfen Arama Motorları Hakkında makalesine bakın.

Kurulum

GroupDocs.Search for .NET, NuGet üzerinde barındırılır ve NuGet Paket Yöneticisi kullanılarak kolayca kurulabilir. Alternatif olarak, API’nin DLL’sini İndirilenler bölümünden indirebilirsiniz.

C# kullanarak Office Belgelerinde Arama Yapın

Aşağıdaki adımlarda, birden çok belgede (Word, Excel, PDF ve diğer belge biçimleri) sözcüklerin veya tümceciklerin nasıl aranacağı açıklanmaktadır.

  • Yeni bir dizin oluşturun: Öncelikle bir dizin oluşturmanız gerekir. Bellekte veya diskte bir dizin oluşturulabilir. Hafızada oluşturulan bir indeks programınızdan çıktıktan sonra kaydedilemez. Buna karşılık, diskte oluşturulan bir dizin çalışmaya devam etmek için gelecekte yüklenebilir. Dizin oluşturmaya ilişkin ayrıntılar Dizin oluşturma bölümünde açıklanmıştır.
  • İndeks olaylarına abone olun: Bir indeks oluşturduktan sonra, indeksleme için indekse belgeler eklemeniz gerekir. Belgeleri indeksleme, örneğin diskten okuma hataları veya bir belgeye erişmek için bir parola bulunması gibi çeşitli nedenlerle başarılı veya başarısız olabilir. Dizin oluşturma hataları hakkında bilgi almak için ErrorOccurred olayına abone olabilirsiniz. Olaylarla çalışmak için Dizin olaylarını ara bölümüne bakın.
  • İndeks Belgeleri: Belge indeksleme, senkron veya asenkron olarak yapılabilir. Eşzamanlı indeksleme, indeksleme işlemini başlatan bir iş parçacığının işlem tamamlanana kadar meşgul olacağı anlamına gelir. Bununla birlikte, daha sık olarak, işlemi başlatan iş parçacığındaki diğer görevleri yürütme yeteneğiyle birlikte dizin oluşturmayı eşzamansız olarak gerçekleştirmek gerekir. İndeksleme işleminin tüm yönleriyle ilgili ayrıntılı bir açıklama, Dizine Ekleme bölümünde verilmektedir.
  • Arama gerçekleştirin: Belgeler dizine eklendiğinde, dizin arama sorgularını işlemeye hazırdır. Aşağıdaki arama sorgusu türleri desteklenir: basit, belirsiz, büyük/küçük harfe duyarlı, boolean, phrasal, yönlü, joker karakterli ve diğerleri. Çeşitli türlerdeki arama sorgularının açıklaması Arama bölümünde sunulmuştur.
  • Arama sonuçlarını kullanın: Bir arama tamamlandığında, bir şekilde sonucu yorumlamanız gerekir. Sonuç, bulunan belgelerin basit bir listesiyle gösterilebilir veya bulunan sözcükler ve tümcecikler belge metninde vurgulanabilir. Arama sonuçlarını işleme hakkında daha fazla bilgi için bkz. Arama sonuçları.
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));
}

Yukarıdaki kod, aşağıdaki çıktıyı ve HTML dosyasını oluşturur.

C# kullanarak Belge Alanlarında Arama

Yönlü arama, aranacak geçerli belge alan adlarını ayarlayarak arama sonuçlarının filtrelenmesidir. Yönlü arama, belgelerin yalnızca belirli alanlarında, örneğin yalnızca içerik alanında veya dosya adı alanında arama yapmanıza olanak tanır. Aşağıda, metin ve nesne biçimindeki sorgularla birlikte basit bir çok yönlü arama örneği sunulmaktadır.

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);

Biçime özgü alanları kullanma

Her belge formatı için, bu tür belgelerde bulunabilecek standart alanlar vardır. Kitaplık, standart belge alanlarının adlarına sahip sabitleri içeren şu sınıfları sağlar: EpubFieldNames, FictionBookFieldNames, MailFieldNames, PresentationFieldNames, SpreadsheetFieldNames , WordsFieldNames.

Her tür belgede bulunabilecek alanlar da vardır. Bu tür alanların adları, CommonFieldNames sınıfında temsil edilir.

Belgelerin standart alan adlarını kullanma örneği aşağıdaki örnekte sunulmuştur.

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);

Yönlü arama ile ilgili ayrıntılı bilgi, Yönlü arama sayfasında sunulmaktadır.

Çözüm

Bu makale, C# dilinde belirli bilgiler için belgelerde (DOCX, PDF, Excel, Metin dosyaları) nasıl arama yapılacağını açıklamaktadır. Belge alanlarında nasıl arama yapılacağı da anlatılmıştır. GroupDocs.Search birkaç başka özellik içerir, bu konuda daha fazla bilgi edinmek için lütfen belgelere bakın.