Ç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.
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.
Çö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.