Protokol işleyicilerini anlama

Bazı uygulamalar öğelerini veritabanlarında veya özel dosya türlerinde depolar. Windows Search dosyanın adını ve özelliklerini dizine alabilir ancak Windows' un dosyanın içeriği hakkında hiçbir bilgisi yoktur. Sonuç olarak, bu tür öğeler Windows Kabuğu'nda dizine alınamaz veya kullanıma sunulmaz. Bir protokol işleyicisi oluşturarak bu öğeleri dizin oluşturma için kullanılabilir hale getirebilirsiniz. .zip dosyası gibi bileşik bir dosya biçimini de dizine alabilirsiniz.

Bu konu aşağıdaki gibi düzenlenmiştir:

Protokol işleyicileri ile veri depolarının dizinini oluşturma

Kullanıcıların Windows Search tarafından desteklenmeyen eski veritabanlarında, e-posta depolarında veya diğer veri yapılarında arama yapması gerektiğinde, önce bu veri deposu için bir protokol işleyicisi olup olmadığını (belki de SharePoint Server gibi başka bir uygulamayla kullanmak üzere) belirlemeniz gerekir. Öyleyse, bu protokol işleyicisini sisteme yükleyebilirsiniz. Windows Search protokol işleyicileri SharePoint Server'a benzer tasarım belirtimlerini kullanır ve bunlar genellikle birbirinin yerine kullanılabilir.

Office SharePoint Server 2007 ile Search Server 2008 dağıtımı hakkında daha fazla bilgi için bkz. Federasyon Araması [Search Server 2008].

Shell veri depoları

Yeni dosya biçimlerinin ve veri depolarının üçüncü taraf bir geliştiricisinin bu biçimleri ve depoları Windows Gezgini'nde sorgu sonuçlarında görünmesini sağlamadan önce geliştiricinin bir Shell veri kaynağı uygulaması gerekir. Kabuk veri kaynağı, Kabuk ad alanını genişletmek ve bir veri deposundaki öğeleri kullanıma açmak için kullanılan bir bileşendir. Veri deposu, veri deposudur. Bir veri deposu Shell programlama modeline Shell veri kaynağı kullanan bir kapsayıcı olarak gösterilebilir. Bir veri deposundaki öğeler, bir protokol işleyicisi kullanılarak Windows Search sistemi tarafından dizine eklenebilir. Protokol işleyicisi, bir içerik kaynağına yerel biçiminde erişmek için protokolü uygular. ISearchProtocol ve ISearchProtocol2 arabirimleri, dizine alınabilen veri kaynaklarını genişletmek üzere özel bir protokol işleyicisi uygulamak için kullanılır.

Sorgu sonuçlarının Windows Gezgini'nde görünmesini istiyorsanız, dizini genişletmek için bir protokol işleyicisi oluşturabilmeniz için önce bir Kabuk veri kaynağı uygulamanız gerekir. Ancak, tüm sorgular programlı olacaksa (örneğin OLE DB aracılığıyla) ve Shell yerine uygulamanın kodu tarafından yorumlanacaksa, hala tercih edilen bir Shell ad alanı kesinlikle gerekli değildir.

Not

Kabuk veri kaynağı bazen Kabuk ad alanı uzantısı olarak bilinir. İşleyici bazen Kabuk uzantısı veya Kabuk uzantısı işleyicisi olarak bilinir.

 

Kullanıcıların arama sonuçlarını Windows Gezgini'nden görüntülemesini istiyorsanız, bir protokol işleyicisi ve aşağıdaki eklentilerden birini veya daha fazlasını oluşturmanız gerekir:

  • Kısayol menüsü işleyicisi
  • Simge işleyicisi
  • Başka bir tür dosya işleyicisi

Başarmaya çalıştığınız geliştirici senaryosu tarafından tanımlanan işleyicilerin listesi için, geliştirme platformu olarak Windows Search 'de "İşleyicilere Genel Bakış" bölümüne bakın. İşleyici oluşturma hakkında bilgi için bkz. Kabuk Uzantılarını kaydetme, Bağlam Menüsüve Dosya Türü İşleyicileri.

Protokol işleyicileri

Veri deposu aynı zamanda bir kapsayıcıysa (dosya sistemi klasörü gibi), kapsayıcıdaki URL'leri listelemek için bir filtre uygulamanız gerekir. Veri deposu, Windows Search tarafından desteklenen 200 dosya türünden biri dışında veri veya dosya türleri içeriyorsa, depodaki öğelerin içeriğine erişmek ve bunları dizine eklemek için bir filtre uygulamanız gerekir. Windows Search, SharePoint Server tarafından kullanılana benzer bir protokol işleyicisi ve IFilter teknolojisi kullanır. Dizine alınan sistemde belirli bir depo ve dosya türüne yönelik filtreleri zaten yüklediyseniz, Windows Search bu verileri dizine almak için mevcut arabirimleri kullanabilir.

Dizin oluşturma işlemine genel bakış için bkz. Dizin Oluşturma İşlemi. Filtre işleyicileri hakkında kavramsal bilgi için bkz. Filtre İşleyicileri Geliştirme.

Filtreler ve protokol işleyicileri

Protokol işleyicileri Windows Search dizin oluşturucusunun veri depolarına erişmesini sağlayarak dizin oluşturucunun bir veri deposunun düğümlerinde gezinmesini ve ilgili bilgileri dizine ayıklamasını sağlar. Örneğin Windows Search, dosya sistemi depoları ve bazı Microsoft Outlook veri depolarının bazı sürümleri için protokol işleyicileri ile birlikte sunulur. Outlook e-postasının dizinini oluştururken, protokol işleyicisi bir dizi Outlook klasörü içindeki tüm iletileri tarar ve her iletiden ve ekten bilgi ayıklar. Bu bilgiler, Windows Search kataloğuna eklenmesi için dizin oluşturucuya geçirilir.

Katalog Yöneticisi ve Gezinme Kapsamı Yöneticisi'ne (CSM) genel bakış için, bkz. Katalog Yöneticisini Kullanma ve Gezinme Kapsamı Yöneticisini Kullanma.

Bileşik dosya biçimini dizine alma

Bileşik dosya biçimi, dosyadaki tek tek öğelerin tek tek sonuçlar olarak döndürülebilmesi için dizine eklenebilir. .zip dosya adı uzantısına sahip sıkıştırılmış dosya gibi bileşik dosya biçimi temelde bir veri deposudur ve dizin oluşturma amacıyla bu şekilde kabul edilebilir. Aşağıdaki örnekte, dosya sistemi ad alanında (FILE://c:/test/test.zip) hem alt klasörlerin hem de tek tek öğelerin bulunduğu bir .zip dosyası görüntülenir.

Test.zip 

    |-folder1 

    |    |-folder2 

    |           |- FileX.txt 

    |- FileY.doc

DOSYA protokolü işleyicisi, dosya sistemi değişiklik günlüklerini izleyerek FILE://c:/test/test.zip değişiklikleri bulur ve dosya değiştiğinde söz konusu dosyadaki .zip dosyalar için kayıtlı IFilter çağırır, ancak .zip dosyasının iç yapısı hakkında bilgi sahibi değildir.

Dizin oluşturucuya bileşik dosya biçiminin bir veri deposu olduğunu bildirmelisiniz. Tek tek öğelerin benzersiz varlıklar olarak dizine alınması ve eriştirilmesi için bu işlemin yapılması gereklidir. Bir Kabuk veri kaynağı uyguladıktan ve aşağıdaki adımları gerçekleştirdikten sonra, bileşik dosya biçimindeki (.zip dosya) verileri tek tek öğeler olarak işleyip kullanıma sunan bir protokol işleyiciniz olur.

Bileşik dosyanın veri deposu olduğunu dizin oluşturucuya bildirmek için:

  1. .zip dosyalar için kaynak dosyaya bağlanma özelliğine sahip bir protokol işleyicisi (ISearchProtocol veya ISearchProtocol2kullanarak) oluşturun. Daha fazla bilgi için bkz. Protokol İşleyicilerini Yükleme ve Kaydetme.

    Örneğin, kök klasör adı olarak .zip dosyasının kaçış yolunu ve ardından diğer dosya biçimleri gibi bir hiyerarşi söz dizimi kullanabilirsiniz.

    .zip:///escapedPathTo.zipFile/.zipfolder/.../.zipfile
    

    c:\test\test.zipiçin yukarıdaki örnek verileri kullanmak, benzersiz URL'ler aşağıdaki gibi olacaktır. Bu URL'lerle protokol işleyicisi, .zip dosyasına bağlamak ve alt URL'leri listelemek için gerekli bilgilere sahiptir; böylece .doc ve .txt filtreleri tarafından bağlanıp dizine alınabilirler.

    
    
    .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/ 
    
    .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/FileY.Doc 
    
    .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/folder1 
    
    .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/folder1/folder2 
    
    .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/folder1/folder2/FileX.txt
    
  2. Protokol işleyicinizin aşağıdaki iki koşulu karşıladığından emin olun:

    • Bir .zip dosyasının kök URL'leri, kök .zip dosya URL'leri olan URL'lerde PKEY_Search_IsClosedDirectory (System.Search.IsClosedDirectory) üretmelidir. Örneğin, .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/ IsClosedDirectory = TRUEyaymalıdır. Bu, dizin oluşturucuya bu URL'de tarih değişmediyse alt URL'lerin hiçbirini işlemesi gerekmediğini bildirir.
    • Bu URL'nin her alt URL'si, kök .zip URL'sinin alt URL'lerinde PKEY_Search_IsFullyContained (System.Search.IsFullyContained) göstermelidir. Normalde, artımlı bir gezinmenin sonunda, dizin oluşturucu tüm ziyaret edilmemiş URL'leri silinmesi gereken öğeler olarak değerlendirir. Ancak kök .zip dosyası kök URL'leri işlememelidir çünkü hiçbir şey değişmemiştir. Bu özelliği 'TRUE' olarak yayımlamak, dizin oluşturucuya eğer bu URL artımlı gezinmenin sonunda işlenmemişse silinmemesi gerektiğini bildirir. Yalnızca kök öğe değiştiğinde ve ziyaret edilmediğinde silinir.

Windows Search, protokolün artımlı olarak taranacak URL'leri belirlemesi ve bulunan URL'lerin hangilerinin yoksayılması gerektiğine karar verebilmesi için bir başlangıç sayfasına ihtiyaç duyar. Ancak her .zip dosyasının nerede olduğunu bilmediğimiz için her .zip dosyasının URL'si ile başlayamaz. Bu nedenle, .zip protokol işleyicisinin başlangıç sayfası URL'si tüm .zip dosyalarının kaçış yollarının kökündeki her şeyi numaralandırabilmelidir. Bu .zip dosyalarının zorunlu olarak FILE: ad alanında bulunması gerekmez; örneğin, bir .zip dosyasına ek olarak işaret eden MAPI türünde bir URL olabilir.

Bir kökü başlangıç sayfası olarak kaydetmek için:

  1. Tüm .zip dosyalarının etkin olarak orada başlaması için başlangıç sayfası olarak .zip:/// gibi bir kök kaydedin. Kök .zip: URL işlenirken, protokol işleyiciniz, System.FileExtension = ".zip" olan tüm URL'ler için Windows Search'ü sorgulayarak oluşturulacak alt URL'lerin bir listesini oluşturmalıdır.

  2. Eğik çizgileri kaldırmak ve alt URL olarak döndürmek için bu URL'lerden kaçın. İstediğiniz türleri almak için örnek bir sorgu aşağıdaki gibi görünebilir.

    SELECT system.itemurl, System.DateModified FROM SystemIndex 
    WHERE System.FileExtension='.zip' OR System.MimeType='mimetypefor.zip'
    
  3. Windows Search düzenli aralıklarla .zip:/// kök URL'nizde artımlı gezinme gerçekleştirdiğinde, Windows Search'ün .zip URL'leri içeren zaten bakımını yaptığı URL'lerin listesini yansıtmanız gerekir. Bir silme işlemi, .zip dosyasının depolandığı yerel depoda tespit edilirse, bu dosya numaralandırmanızda görünmez ve .zip içindeki ağacın o dalı kaldırılır.

  4. Başka bir protokol işleyicisinin .zip verilerine bağlanmak için, ideal olarak IShellFolder üzerinden giderek bu URL ile nesnenin depolamasına bağlanmalısınız ve bu nesnenin her zaman bir dosya olduğunu varsaymamalısınız. Bunu yapmak, örneğin posta depolarındaki eklerle çalışma esnekliği sağlar.

  5. Her .zip dosyası için alt URL'leri oluştururken, dizinleyicinin yalnızca değiştirildiğinde .zip dosyasında gezinmesi için gerçek .zip dosyasının PKEY_DateModified (System.DateModified) değerini iletmek üzere PKEY_Search_UrlToIndexWithModificationTime (System.Search.UrlToIndexWithModificationTime) kullanmalısınız.

.zip URL'lerinizin oluşturulduktan veya değiştirildikten hemen sonra dizine alınmasını sağlamak ve yeni durumlarını keşfetmek için artımlı gezinmeyi beklemek zorunda kalmamak için, dosya sistemini .zip dosya değişiklikleri için kendiniz izleyebilirsiniz. Ancak, bu tür bir yaklaşım MAPI gibi diğer veri depolarında çalışmaz.

.zip URL'lerinizin oluşturulduklarında veya değiştirildiğinde dizine eklenmelerini sağlamak için:

  1. .zip dosya türü için bir filtre (ve IFilter arabiriminin uygulanması) oluşturun. Daha fazla bilgi için bkz. Windows Search için Özellik İşleyicileri Geliştirme.
  2. IFilter uygulamanız her çağrıldığında, URL'nin keşfedildiği veya değiştirildiği anlamına gelir. Ardından, IGatherNotifyInline arabirimi aracılığıyla kaynak URL için uygun .zip URL'si için bir olay oluşturun. Bunu yapmak, artımlı gezinmeyi beklemenize gerek kalmadan dizin oluşturucuya dizine eklenecek yeni veriler olduğunu hemen söylemenizi sağlar.

Protokol İşleyicileri Geliştirme

Protokol İşleyicilerini Yükleme ve Kaydetme

Değişiklik Dizinine Bildirme

Simge ve Bağlam Menüleri Ekleme

Kod Örneği: Protokol İşleyicileri için Kabuk Uzantıları

Protokol İşleyicilerini Yükleme ve Kaydetme

Protokol İşleyicisi için Arama Bağlayıcısı Oluşturma

Hata Ayıklama Protokolü İşleyicileri