Bagikan melalui


Memahami Handler Protokol

Beberapa aplikasi menyimpan item mereka dalam database atau jenis file kustom. Meskipun Windows Search dapat mengindeks nama dan properti file, Windows tidak memiliki pengetahuan tentang isi file. Akibatnya, item tersebut tidak dapat diindeks atau diekspos di Windows Shell. Dengan membuat handler protokol, Anda dapat membuat item ini tersedia untuk pengindeksan. Anda juga dapat mengindeks format file gabungan seperti file .zip.

Topik ini diatur sebagai berikut:

Pengindeksan Penyimpanan Data dengan Handler Protokol

Ketika pengguna perlu mencari database warisan, penyimpanan email, atau struktur data lain yang tidak didukung oleh Windows Search, Anda harus terlebih dahulu menentukan apakah handler protokol sudah ada untuk penyimpanan data tersebut, mungkin untuk digunakan dengan aplikasi lain seperti SharePoint Server. Jika demikian, Anda dapat menginstal handler protokol tersebut pada sistem. Penangan protokol Windows Search menggunakan spesifikasi desain yang mirip dengan SharePoint Server, dan mereka sering dapat digunakan secara bergantian.

Untuk informasi selengkapnya tentang penyebaran Search Server 2008 dengan Office SharePoint Server 2007, lihat Pencarian Federasi [Search Server 2008].

Penyimpanan Data Shell

Sebelum pengembang pihak ketiga dari format file dan penyimpanan data baru bisa mendapatkan format dan penyimpanan tersebut untuk muncul dalam hasil kueri di Windows Explorer, pengembang harus menerapkan sumber data Shell. Sumber data Shell adalah komponen yang digunakan untuk memperluas namespace Shell dan mengekspos item di penyimpanan data. Penyimpanan data adalah repositori data. Penyimpanan data dapat diekspos ke model pemrograman Shell sebagai kontainer yang menggunakan sumber data Shell. Item dalam penyimpanan data dapat diindeks oleh sistem Windows Search menggunakan penangan protokol. Handler protokol menerapkan protokol untuk mengakses sumber konten dalam format aslinya. Antarmuka ISearchProtocol dan ISearchProtocol2 digunakan untuk menerapkan handler protokol kustom untuk memperluas sumber data yang dapat diindeks.

Jika Anda ingin hasil kueri muncul di Windows Explorer, Anda harus menerapkan sumber data Shell sebelum Anda bisa membuat handler protokol untuk memperluas indeks. Namun, jika semua kueri akan terprogram (melalui OLE DB misalnya) dan ditafsirkan oleh kode aplikasi daripada Shell, namespace Shell sementara masih disukai tidak benar-benar diperlukan.

Catatan

Sumber data Shell terkadang dikenal sebagai ekstensi namespace Shell. Handler terkadang dikenal sebagai ekstensi Shell atau handler ekstensi Shell.

 

Jika Anda ingin pengguna melihat hasil pencarian mereka dari dalam Windows Explorer, maka Anda harus membuat handler protokol dan satu atau beberapa add-in berikut:

  • Penangan menu pintasan
  • Handler ikon
  • Beberapa jenis penangan file lainnya

Untuk daftar handler yang diidentifikasi oleh skenario pengembang yang coba Anda capai, lihat "Gambaran Umum Handler" di Windows Search sebagai Platform Pengembangan. Untuk informasi tentang membuat penangan, lihat Mendaftarkan Ekstensi Shell, Menu Konteks, dan Penangan Jenis File.

Pengatur Protokol

Jika penyimpanan data juga merupakan kontainer (seperti folder sistem file), Anda harus menerapkan filter untuk menghitung URL dalam kontainer. Jika penyimpanan data berisi tipe data atau file selain salah satu dari 200 jenis file yang didukung oleh Windows Search, Anda harus menerapkan filter untuk mengakses dan mengindeks konten item di penyimpanan. Windows Search menggunakan handler protokol dan teknologi IFilter yang mirip dengan yang digunakan oleh SharePoint Server. Jika Anda sudah memiliki filter untuk penyimpanan tertentu dan jenis file yang diinstal pada sistem yang sedang diindeks, Windows Search mungkin dapat menggunakan antarmuka yang ada untuk mengindeks data ini.

Untuk gambaran umum proses pengindeksan, lihat Proses Pengindeksan. Untuk informasi konseptual tentang penangan filter, lihat Mengembangkan Penangan Filter.

Filter dan Handler Protokol

Penangan protokol memberi pengindeks Windows Search akses ke penyimpanan data, memungkinkan pengindeks untuk merayapi simpul penyimpanan data dan mengekstrak informasi yang relevan untuk diindeks. Windows Search, misalnya, dikirim dengan handler protokol untuk penyimpanan sistem file dan untuk beberapa versi kedua penyimpanan data Microsoft Outlook. Saat mengindeks email Outlook, handler protokol merayapi semua pesan dalam sekumpulan folder Outlook dan mengekstrak informasi dari setiap pesan dan lampiran. Informasi ini diteruskan ke pengindeks untuk dimasukkan dalam katalog Windows Search.

Untuk gambaran umum Pengelola Katalog dan Pengelola Cakupan Perayapan (CSM), lihat Menggunakan Pengelola Katalog dan Menggunakan Pengelola Cakupan Perayapan.

Mengindeks Format File Gabungan

Format file gabungan dapat diindeks sehingga item individual dalam file dapat dikembalikan sebagai hasil individual. Format file campuran seperti file terkompresi dengan ekstensi nama file .zip pada dasarnya adalah penyimpanan data dan dapat diperlakukan seperti untuk tujuan pengindeksan. Contoh berikut menampilkan file .zip di namespace sistem file (FILE://c:/test/test.zip) di mana ada subfolder dan item individual.

Test.zip 

    |-folder1 

    |    |-folder2 

    |           |- FileX.txt 

    |- FileY.doc

Handler protokol FILE menemukan ketika FILE://c:/test/test.zip berubah dengan memantau log perubahan sistem file, dan akan memanggil IFilter yang terdaftar untuk file .zip pada file tersebut ketika file berubah, tetapi tidak memiliki pengetahuan tentang struktur internal file .zip itu sendiri.

Anda harus memberi tahu pengindeks bahwa format file gabungan adalah penyimpanan data. Anda perlu melakukannya agar item individual diindeks dan diambil sebagai entitas unik. Setelah Anda menerapkan sumber data Shell dan melakukan langkah-langkah berikut, Anda akan memiliki handler protokol yang dapat memproses dan mengekspos data dari format file majemuk (file .zip) sebagai item individual.

Untuk memberi tahu pengindeks bahwa file gabungan adalah penyimpanan data:

  1. Buat handler protokol (menggunakan ISearchProtocol atau ISearchProtocol2) untuk file .zip yang memiliki kemampuan yang mengikat file sumber. Untuk informasi selengkapnya, lihat Menginstal dan Mendaftarkan Penangan Protokol.

    Misalnya, Anda dapat menggunakan jalur escape ke file .zip sebagai nama folder akar lalu menggunakan sintaks hierarki seperti format file lainnya.

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

    Dengan menggunakan data sampel di atas untuk c:\test\test.zip, URL uniknya adalah sebagai berikut. Dengan URL ini, handler protokol memiliki informasi yang diperlukan untuk mengikat file .zip dan menghitung URL anak termasuk file dalam sehingga dapat diikat dan diindeks oleh filter .doc dan .txt.

    
    
    .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. Pastikan bahwa handler protokol Anda memenuhi dua kondisi berikut:

    • URL akar untuk file .zip harus memancarkan PKEY_Search_IsClosedDirectory (System.Search.IsClosedDirectory) pada URL yang merupakan URL file .zip root. Misalnya, .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/ harus mengeluarkan IsClosedDirectory = TRUE. Ini memberi tahu pengindeks bahwa jika tanggal pada URL ini tidak berubah, pengindeks tidak perlu memproses URL anak mana pun.
    • Setiap URL anak untuk URL tersebut harus memancarkan PKEY_Search_IsFullyContained (System.Search.IsFullyContained) pada URL anak url .zip akar. Biasanya di akhir perayapan bertahap, pengindeks memperlakukan semua URL yang tidak dilihat sebagai item yang harus dihapus. Tetapi file .zip akar tidak boleh memproses URL akar karena tidak ada yang berubah. Memancarkan properti ini sebagai TRUE memberi tahu pengindeks bahwa jika URL ini belum diproses di akhir perayapan bertahap, maka tidak boleh dihapus. Ini hanya akan dihapus jika item akar telah berubah dan tidak dikunjungi.

Windows Search memerlukan halaman mulai untuk protokol untuk mengetahui URL apa yang akan dirayapi secara bertahap dan URL mana yang harus diabaikan ketika ditemukan. Tetapi kita tidak dapat memulai dengan URL untuk setiap file .zip, karena kita tidak tahu di mana setiap file .zip berada. Oleh karena itu, URL halaman mulai handler protokol .zip harus dapat menghitung semuanya di akar jalur yang lolos dari semua file .zip. File .zip tersebut belum tentu ada dalam FILE: namespace dan bisa menjadi URL jenis MAPI yang menunjuk ke file .zip sebagai lampiran, misalnya.

Untuk mendaftarkan akar sebagai halaman mulai:

  1. Daftarkan akar seperti .zip:/// sebagai halaman mulai sehingga semua file .zip dimulai di sana, berlaku. Saat memproses URL .zip root: , handler protokol Anda harus menghasilkan daftar URL anak yang akan dikeluarkan dengan mengkueri Windows Search untuk semua URL dengan System.FileExtension = ".zip".

  2. Lepaskan URL tersebut untuk menghapus garis miring dan mengembalikannya sebagai URL anak. Contoh kueri untuk mengambil tipe yang Anda inginkan mungkin terlihat sebagai berikut.

    SELECT system.itemurl, System.DateModified FROM SystemIndex 
    WHERE System.FileExtension='.zip' OR System.MimeType='mimetypefor.zip'
    
  3. Ketika Windows Search secara berkala melakukan perayapan bertahap pada URL akar .zip:/// Anda, Anda harus mencerminkan kembali daftar URL yang sudah dipertahankan Windows Search yang merupakan URL .zip. Jika penghapusan ditemukan di penyimpanan asli tempat file .zip disimpan, itu tidak muncul di enumerasi Anda, dan cabang pohon di .zip dihapus.

  4. Untuk mengikat data .zip untuk handler protokol lain, idealnya Anda harus melalui IShellFolder agar URL tersebut terikat ke penyimpanan objek, dan tidak menganggapnya selalu merupakan file. Melakukannya memberi Anda fleksibilitas untuk bekerja dengan lampiran di penyimpanan email, misalnya.

  5. Saat memancarkan URL anak untuk setiap file .zip, Anda harus menggunakan PKEY_Search_UrlToIndexWithModificationTime (System.Search.UrlToIndexWithModificationTime) untuk meneruskan PKEY_DateModified (System.DateModified) dari file .zip aktual sehingga pengindeks merayapi file .zip hanya jika telah berubah.

Agar URL .zip Anda diindeks segera setelah dibuat atau dimodifikasi, dan tidak perlu menunggu perayapan bertahap untuk menemukan status baru mereka, Anda dapat memantau sendiri sistem file untuk perubahan file .zip. Namun, pendekatan seperti itu tidak akan berfungsi untuk penyimpanan data lain seperti MAPI.

Agar url .zip Anda diindeks saat dibuat atau dimodifikasi:

  1. Buat filter (dan implementasi antarmuka IFilter ) untuk jenis file .zip. Untuk informasi selengkapnya, lihat Mengembangkan Handler Properti untuk Windows Search.
  2. Setiap kali implementasi IFilter Anda dipanggil, itu karena URL tersebut telah ditemukan atau diubah. Kemudian, buat peristiwa untuk URL .zip yang sesuai untuk URL sumber, melalui antarmuka IGatherNotifyInline. Melakukannya memberi Anda kemampuan untuk segera memberi tahu pengindeks bahwa ada data baru yang akan diindeks tanpa harus menunggu perayapan bertahap.

Mengembangkan Handler Protokol

Menginstal dan Mendaftarkan Penangan Protokol

Memberi tahu Indeks Perubahan

Menambahkan Ikon dan Menu Konteks

Sampel Kode: Ekstensi Shell untuk Penangan Protokol

Menginstal dan Mendaftarkan Penangan Protokol

Membuat Koneksi or Pencarian untuk Handler Protokol

Penangan Protokol Debugging