Ayrıntılara geçmeden önce, tam metin arama tekniğine genel bir bakış atalım. Tam metin arama, temel olarak bir belge koleksiyonu üzerinde bir metin/sorgu aramanın daha gelişmiş bir yoludur. Bu yaklaşım, bir terimin tüm örneklerini hızlı bir şekilde bulur ve metin dizinlerini kullanarak çalışır. Bu yazıda, C# kullanarak belgelerde programlı olarak tam metin aramayı öğreneceğiz.

Bundan sonra, kelime işlem belgelerinde, elektronik tablolarda, sunumlarda, HTML dosyalarında, PDF e-Kitaplarda, e-posta mesajlarında, ZIP arşivlerinde ve diğer birçok dosyada metin aramak için çeşitli arama teknikleri uygulayabilirsiniz.

Tam metin arama uygulamasının örneklerinden biri, Word işlemcilerde ve metin editörlerindedir. Belgenin herhangi bir yerinde bir ifade veya sözcük bulmanıza yardımcı olur.

Tam Metin Arama

Aşağıdaki konular aşağıda ele alınmıştır:

Metin Arama için .NET API

GroupDocs.Search for .NET, tam metin aramasına izin veren ve herhangi bir üçüncü taraf araç veya yazılım bağımlılığı olmadan herhangi bir .NET uygulamasına entegre edilebilen bir arka uç arama API’sidir. Uygulamalarınızda çok sayıda belge biçimini aramanıza izin verir.

İndirilenler bölümünden DLL’leri veya MSI yükleyicisini indirebilir veya NuGet aracılığıyla .NET uygulamanıza API’yi yükleyebilirsiniz.

PM> Install-Package GroupDocs.Search

C# kullanarak Tam Metin Arama

Tam metin araması gerçekleştirmek veya uygulamak için iki ana adım vardır.

  • indeksleme
  • Arama Yap

indeksleme

Aynı veya farklı dosya formatlarına sahip binlerce doküman arasında anında arama yapabilmek için bir indeks oluşturmanız ve bu dokümanları bu indekse eklemeniz gerekmektedir.

indeks nedir?

Bir dizin, tüm belgelerin taranmış metnine sahiptir. Bu nedenle, bir arama işlemi (belirli bir sorguda arama) yapacağınız zaman, orijinal belgelerin metnine değil, yalnızca dizine başvurulur.

dizin oluşturma

Bellekte veya diskte bir dizin oluşturulabilir. Hafızada oluşturulan 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. Aşağıdaki örnek, bir diskte nasıl dizin oluşturulacağını gösterir.

Index index = new Index("indexPath/FolderName/");

Belgeler dizine eklendiğinde, dizin arama sorgularını işlemeye hazırdır. Aşağıda, GroupDocs.Search for .NET kullanılarak gerçekleştirilebilecek arama tekniklerinden bazıları verilmiştir:

  • Büyük/Küçük Harfe Duyarlı Arama
  • Normal İfade Araması
  • Cümle Arama
  • Yönlü Arama
  • Eş anlamlı Arama
  • Joker Karakter Araması

C# ile Arama Gerçekleştirin

Bir kullanım durumuyla başlayarak. Birden çok belgemiz (Word, PDF, Excel ve HTML) varsa ve bunlar üzerinde belirli bir arama sorgusu (“video” arama terimi) gerçekleştirmek istiyorsak.

Aşağıdakiler, bir klasördeki birden çok belgede metin aramasının nasıl gerçekleştirileceğine ilişkin adımlardır:

  • Kaynak belgeler klasörüne ve dizin klasörüne karar verin.
  • Sorgu dizesini hazırlayın.
  • İndeks klasörünü kullanarak Index oluşturun.
  • Kaynak belgeler klasörünü dizine ekleyin.
  • Search yöntemi Index sınıfını kullanarak bir arama yapın.
  • Her belgenin özellikleri için sonuçları inceleyin ve arayın.

Aşağıdaki kaynak kodu, sağlanan klasörün tüm belgelerinde C# kullanarak bir metin araması gerçekleştirir.

// C#'ta sağlanan klasörün tüm belgelerinde Sorgu Metni Ara
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Belirtilen klasörde dizin oluşturma ve belgeler klasörünü Dizine ekleme
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// dizinde arama
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Arama Sonucundaki her belgeyi gezin
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Belge klasöründe bulunan tüm belgelerde belge yolunu ve arama teriminin oluşum sayısını alacağız. İşte görselleştirmek için ekran görüntüsü.

Tam Arama Metin Çıktısı

C#’ta Metin Arama Sonuçlarını Vurgulayın

Şimdi aynı metin aramasını yapalım, ancak bu sefer sorguyla eşleşen tüm oluşumları vurgulayacağız.

Aşağıdaki adımlar, metin arama sonuçlarının nasıl vurgulanacağını gösterir:

  • Sorgu dizesini hazırlayın.
  • Dizin klasörü yolunu kullanarak Dizin oluşturun.
  • Kaynak belgeler klasörünü dizine ekleyin.
  • Ara yöntemini kullanarak belge klasörünü arayın.
  • Arama sonuçları arasında gezinirken Vurgulayıcı oluşturun.
  • Arama sonuçlarını vurgulamak için Index sınıfının Vurgula yöntemini kullanın.

Aşağıdaki kod, C# kullanarak vurgulanan arama sonuçlarıyla HTML çıktısını oluşturur.

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Belirtilen klasörde bir dizin oluşturun ve belgeler klasörünü Dizine ekleyin
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Sorgu kelimesini arayın
SearchResult result = index.Search(query);

// Metindeki tüm oluşumları vurgulayın
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

Çıktı olarak, birden fazla HTML dosyası alacağız. Her dosya, vurgulanmış arama terimi/kelimesiyle farklı bir belgenin içeriğini (örn. excel.xlsx, source.docx, target.docx) gösterecektir. Aşağıda, bir DOCX dosyasının vurgulanmış HTML çıktısı verilmiştir.

İçerikte tam metin arama sonuçlarını vurgulayın

Ücretsiz API Lisansı Alın

API’yi değerlendirme sınırlamaları olmadan kullanmak için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Bu makalede, C# kullanarak bir klasörün birden çok belgesinde metin aramayı öğrendik. Ayrıca, arama sonuçlarının metninin HTML biçiminde programlı olarak nasıl vurgulanacağını tartıştık.

Belgeleme kullanarak API hakkında daha fazla bilgi edinebilirsiniz. GitHub adresinde daha birçok örnek mevcuttur. Sorularınız için forum aracılığıyla bize ulaşın.

Ayrıca bakınız