SharePoint KeywordQuery Kullanarak Arama Sorgusu Yaparak Sonuçları Listeleme

2+

Merhaba arkadaşlar bugün sizlere SharePoint ortamında server side olarak “KeywordQuery” kullanarak nasıl sharepoint search servisini kullanarak sorgu atıp gelen sonuçları alabileceğinizden bahsedeceğim.

İlk olarak oluşturduğumuz projeye “Microsoft.Office.Server.Search” referansını ekliyoruz.

Oluşturduğumuz webpartımızın ascx tarafında arama textbox ımızı, butonumuzu ve sonuçların listeleneceği repeater kontrollerimizi ekliyoruz.

Daha sonra code behind tarafına geçerek burada sonuçlarımıza uygun bir sınıf oluşturuyoruz.

Sonrasında ascx tarafında otamatik oluşturmuş olduğumuz “btnSearch_Click” eventımızın içine giderek kodumuzu yazmaya devam ediyoruz.

İlk olarak sitemizde arama yaptıracağımız için SPSite ile site bağlantımızı yapmamız gerekmektedir.

Bu tanımlamadan sonra ilk olarak sorgu parametrelerini tanımlamak için “KeywordQuery” değişkenimizi oluşturuyoruz.

Bu parametremiz için gerekli olan ve kullanacağımız SourceId, QueryText, SelectProperties ve RowLimit parametrelerine gerekli atamalarımızı yapıyoruz. Bu örnekte sadece bu kadar parametre kullanma ihtiyacı duydum siz bunların sayısını da arttırabilirsiniz ihtiyacınıza uygun olarak.

Bu kısımda:

SourceId kısmında verdiğimiz Guid id’si aslında daha önceki SharePoint PNP JS Core Search Yapısında Arama Yapılmasını İstediğimiz Alanı Özelleştirmemize Yarayan ‘SourceId’ Parametre Değerleri ve Karşılıkları yazımda da bahsettiğim gibi genel arama kriterlerinden bahsedeceğim için bu id tanımlanmıştır.

QueryText parametresinde ise başta yıldız olmasının sebebi sql command’ta olduğu gibi girilen text değerinin bire bir değil içinde geçenleri de aramasını sağlamaktadır. Bu alana path vs gibi filtrelerde eklenebilmektedir. Search webpartında yer alan query kısmındaki tüm özellikleri desteklemektedir. Ekstra olarak textboxtan gelen değeri aratmak istediğim için bu alandaki text değerini de buraya ekledim.

SelectProperties kısmında ise gelmesini istediğimiz değerleri ekliyoruz. Burada sadece Title ve Path bilgilerinin gelmesini istediğim için bu ik değeri ekledim. İsteğe göre arttırabilirsiniz.

Gerekli ayarlamalarımızı yaptıktan sonra sorgumuzu atabiliriz. Aşağıdaki gibi “SearchExecutor” ile sorgumuzu atıyoruz.

ResultTableCollection resultTables = new SearchExecutor().ExecuteQuery(kq);

Sorgumuz sonucu bize “ResultTableCollection” tipinde gelecektir buradan işimize yarayacak datatable tablosunu almamız gerekmektedir.

DataTable resultDataTable = resultTables.FirstOrDefault().Table;

Buradan sonra bu tablo içerisinde gezerek kullanacağımız değerleri modellimiz formatına getirerek toplamamız gerekmektedir. Bu modelleri toplayabilmek için oluşturduğumuz model türünde liste oluşturuyoruz.

Sonuç tablomuz üzerinde gezerek modelleri oluşturup model listemize ekliyoruz.

Arama sonuçlarımızın istediğimiz modele uygun şekile getirilmiş bir halde elimiz de bir listemiz yer almaktadır. Şimdide bu listeyi ekranda görebilmek için repeater a bind ediyoruz.

Gördüğünüz gibi bu şekilde sharepoint search alt yapısını kullanarak kendi arama uygulamamızı yazmış olduk.

Kodun tamamını bir verecek olursak aşağıdaki gibi bir code behind olacaktır.

Sitemizde yer alan default arama ekranından arama yaptığımız da gelen sonuç ekranı aşağıdaki gibidir.

Birde yazdığımız arama webpartında aynı aramayı yapalım.

Gördüğünüz gibi aynı sonuçları getirmektedir.

Projenin tamamını aşağıdaki github linkindende indirebilirsiniz.

2+

Bir Cevap Yazın