(Bu yazıyı okuyanların en basit düzeyde Sharepoint’in Search özelliğini kullandığını varsayıyorum.)
Sharepoint Server ile indexleme işlemi yapmadan bazı konfigürasyon ayarları yapmanız gerekir. Content Source ve Scope tanımlamaları bunlardan en önemli olanlarıdır. Öte yandan indexlemek istediğiniz veriyi filtrelemek içinde bazı kurallar oluşturma ihtiyacı duyabilirsiniz, bunu Crawl Rules bölümünden gerçekleştirirsiniz.
Problem
Bildiğiniz gibi “Manage Crawl Rules” bölümünde rule’lar oluşturarak index’lenecek datayı belirleyebiliyorsunuz.Örneğin aşağıdaki gibi bir site path’imiz olsun.
http://moss:8080/News/
Http://moss:8080/Products/
http://moss:8080/Products/Computers/
…
Ben burada Computer ve onu takip eden tüm site’ların indexlenmesini istemiyorsam aşağıdaki gibi bir rule tanımlamam yeterlidir. Bu takdirde MOSS indexleme işlemini yaparken bu bölüme girmeyecektir. Buraya kadar bir problem yok..

Problem bu senaryonun tam tersini oluşturmaya çalıştığımızda ortaya çıkıyor. Örneğin ben sadece Pages klasörünün altındaki dosyaların indexlenmesini istiyorsam ne yapmalıyım? Eğer aklınıza Content Source tanımlamak geliyorsa bunu unutun, çünkü Content Source kısmında bu şekilde bir tanımlama yapamazsınız. Bende aşağıdaki gibi bir Rule oluşturuyorum.

Burada beklenen şey ; MOSS her bir path için buraya uğrayacak, eğer ilk kurala uyuyorsa bu kaynağı indexleyecek eğer uymuyorsa bir sonraki kurala geçecek ve indexlemeyecek. Fakat MOSS bekleneni yapmıyor ve hiç bir şey indexlemiyor. Ben bu konuyu Microsoft Support ile görüştüm ve kendileri de buna bir anlam veremediler, bunun bir bug olmadığı MOSS’un architecture’ndan kaynaklandığını söylediler. Fakat kendileri bir workaround önerdiler oda List , Document Library ve Site’ların Search Visibility özelliğini kullanmak oldu.
Search Visibility
MOSS’da her bir Site, Document Library ve List bir Search Visibility özelliğine sahiptir.

Burada bu özelliği “No” olarak set ettiğimizde MOSS bu List eve Site altındaki verileri indexlemeyecektir. Yalnız burada dikkat etmeniz gereken husus eğer bir Site’ın bu özelliğini No yaparsan sonrasında bu Site’ın içindeki bir List’in özelliğiyle oynamak artık anlamlı olmayacaktır, dolayısıyla yaklaşımınız tamamen List’ler üzerinden olmalıdır, çünkü MOSS her şeyi bir List altında tutar.
Burada karşınıza çıkan problem nettir, eğer binlerce List ve Site’a sahipseniz bunların her birini set etmek vakit alacaktır. Fakat bu işlemi MOSS API’lerini kullanarak otomatik olarak yapabilirisiniz. Benim karşılaştığım bir problem için Microsoft küçük bir Windows Uygulaması yazıp bana göndermişti, bende bunun üzerinde bazı oynamalar yaptım. Bu uygulama ile yazımın en başında yapak istediğimizi List’lerin Search Visibility özelliğini değiştirerek gerçekleştireceğiz.
Uygulama kodlarını incelerseniz vermiş olduğunuz bir Site Collection içinde recursive olarak tüm List ve Site’ları çekip NoCrawl özelliğini set edildiğini görürsünüz. Örneğin
Sp Web web = ….
web.NoCrawl = false;
….
Programın kullanımı ise oldukça basittir, Rule’larınızı, başına include ve exclude ifadelerini kullanarak alt alta belirliyorsunuz. Örneğin bizim yapmak istediğimiz şeyi aşağıdaki rule’ları oluşturarak gerçekleştirebiliriz. Bu arada sonuçlar Logs sekmesinden görebilirsiniz..

Son olarak bu işlemden önce Sharepoint Administration’daki Rule’ları silin ve bu işlemden sonra Crawl işlemini başlatın. Peki bundan sonraki süreçte ne olacak ? Açıkcası benim tavsiyem her zaman kendi Site ve List Template’lerinizi kullanın ve bu Template’i oluştururken Search özelliğini set edin.

Hiç yorum yok:
Yorum Gönder