Çok sayıda dosya arasında nasıl kolayca arama yapabileceğinizi veya farklı klasörlerdeki dosyalar içinde arama yapma zorluğunu nasıl aşabileceğinizi hiç merak ettiniz mi? Bu makalede aradığınız yanıtlar bulunmaktadır. Hadi metin arama dünyasına dalalım ve C# kullanarak farklı klasörlerdeki farklı dosyalarda çeşitli metinleri veya cümleleri nasıl arayacağımızı keşfedelim.

Dosyalar ve Klasörler Arasında Metin Taramak için C# API’si

Şimdi, klasörler arasında farklı formatlardaki dosyalar içindeki çok sayıda metni keşfetmek için GroupDocs.Search for .NET API’sini kullanacağız. Bu kitaplık, Word belgeleri, elektronik tablolar, sunumlar, PDF dosyaları, İşaretleme dosyaları, e-Kitaplar, e-posta mesajları, One Note belgeleri ve ZIP arşivleri gibi çok çeşitli dosya formatlarındaki metinleri sistematik olarak taramamıza olanak sağlar. Desteklenen dosya formatlarının ayrıntılı bir listesi için kapsamlı belgelere bakın.

İndirilenler bölümünden DLL’leri veya MSI yükleyicisini alma seçeneğiniz vardır veya NuGet kullanarak API’yi .NET uygulamanıza yükleyebilirsiniz.

PM> Install-Package GroupDocs.Search

C# kullanarak Klasörlerdeki Dosyalardaki Birden Çok Metni Arama

C# kullanarak birden çok klasör içindeki birden çok dosyada metin araması yapmak ve bulunan her belge için vurgulanmış HTML çıktı dosyaları oluşturmak için bu adımları izleyin.

  • Belirtilen dizin klasörü yolu ile bir Index nesnesi oluşturun.
  • Ekle yöntemini kullanarak ana belge klasörünü dizinleyin.
  • Birden çok terim veya kelime öbeği içeren bir arama sorgusu tanımlayın.
  • Arama yöntemini kullanarak metin taramayı gerçekleştirin ve sonuçları saklayın.
  • Arama sonuçlarında yineleyin:
    • GetFoundDocument yöntemini kullanarak bulunan her belgeyi alın.
    • Bulunan belgenin herhangi bir dosya bilgisini alın veya yazdırın.
    • İstenilen format ve yol için bir OutputAdapter ayarlayın.
    • Belge için bir Vurgulayıcı oluşturun.
    • Vurgulama yöntemini kullanarak arama sonuçlarını vurgulayın ve bir HTML dosyasına aktarın.
// C# kullanarak Birden Çok Klasör içindeki çeşitli dosya formatlarındaki birden çok dosyada Metin Arama

// Belirtilen klasörden indeks oluşturma ve belgeleri indeksleme
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// 'Su' veya 'olmayan' kelimesini veya 'Lorem ipsum' ifadesini içeren belgeleri arayın
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Sonucun yazdırılması
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Arama sonuçlarını vurgulayın
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

Yukarıdaki kod, birden fazla dosyadaki belirli metinleri aramanıza ve bulunan her belge için vurgulanmış HTML çıktı dosyaları oluşturmanıza olanak tanır.

HTML formatında Vurgulanan Metin Arama Sonuçları

Metin Arama Sonuçlarını Yazdırma

Arama sorgusunun sonucundan, bulunan belgeler hakkında daha fazla bilgi çıkarabilirsiniz.

// Sonucun yazdırılması
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Bulunan terimleri yazdırma
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Bulunan ifadeleri yazdırma
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Aşağıdakiler, DOCX, PDF ve TXT dosyalarından elde edilen yukarıdaki arama sonuçlarının yazdırılmasının çıktısı olacaktır:

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

Kodu tamamla

Birden çok dosya ve klasördeki metin dizelerini ve tümceciklerini toplu olarak arayan C# kodunun tamamı aşağıda verilmiştir:

// C# kullanarak Birden Çok Klasör içindeki çeşitli dosya formatlarındaki birden çok dosyada Metin Arama

// Belirtilen klasörden indeks oluşturma ve belgeleri indeksleme
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// 'Su' veya 'olmayan' kelimesini veya 'Lorem ipsum' ifadesini içeren belgeleri arayın
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Sonucun yazdırılması
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Arama sonuçlarını vurgulayın
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Bulunan terimleri yazdırma
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Bulunan ifadeleri yazdırma
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Ücretsiz Lisans veya Ücretsiz Deneme Alma

Ücretsiz lisans

Bu kütüphaneyi kısıtlama olmadan keşfetmek için ücretsiz geçici lisans edinin.

Ücretsiz deneme

İndirilenler bölümünden ücretsiz deneme sürümünü indirebilirsiniz.

Dosya ve Klasörler İçinde Arama Yapmak için .NET API

Çözüm

Bu makalede, C# kullanarak çeşitli klasörlerdeki çok sayıda dosyadaki çeşitli metinleri aramak için metin taramayı araştırdık. Arama sorgusundan başlayarak, ilgili HTML dosyalarında aranan kelimeleri veya kelime öbeklerini vurgulayarak birden fazla dosya ve klasörü araştırdık.

API hakkında kapsamlı ayrıntılar için okuyucuların belgelere başvurmaları önerilir.

Herhangi bir sorunuz veya ek tartışmanız mevcut forum adresine yönlendirilebilir.

Ayrıca bakınız