Bagikan melalui


Windows Search sebagai Platform Pengembangan

Untuk mengindeks konten dan properti format file dan penyimpanan data baru, Microsoft Windows Search harus diperluas dengan add-in.

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 melakukan tiga hal berikut:

  • Terapkan sumber data Shell untuk memperluas namespace Shell.
  • Mengekspos item di penyimpanan data (jika mereka menambahkan penyimpanan data baru, karena perlu diindeks).
  • Kembangkan handler protokol sehingga Windows Search dapat mengakses data untuk pengindeksan.

Topik ini diatur sebagai berikut:

Memulai

Sebelum Anda mulai membuat aplikasi Windows Search, ingatlah bahwa cara yang disukai untuk melakukannya adalah melalui sumber data Shell. Sumber data Shell memperluas namespace Shell dan mengekspos item di penyimpanan data. Item di penyimpanan data kemudian dapat diindeks oleh sistem Windows Search dengan menggunakan handler protokol. Pendekatan tidak langsung untuk mengakses Windows Search dengan menerapkan sumber data Shell lebih disukai karena menyediakan akses ke fungsionalitas Shell penuh. Melakukannya dengan cara ini memastikan pengalaman pengguna yang wajar.

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 masih lebih disukai tetapi tidak diperlukan.

Handler protokol diperlukan untuk Windows untuk mendapatkan pengetahuan tentang isi file, seperti item dalam database atau tipe 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 menerapkan handler protokol kustom, Anda dapat mengekspos item ini. Untuk daftar handler yang diidentifikasi oleh skenario pengembang yang coba Anda capai, lihat Gambaran Umum Handler.

Gambaran Umum Skenario Pengembangan Pencarian

Skenario pengembangan yang paling umum di Windows Search adalah:

Menambahkan Penyimpanan Data Baru

Anda memerlukan penyimpanan data Shell untuk Windows Search hanya jika Anda menambahkan penyimpanan data baru untuk diindeks. Penyimpanan data adalah repositori data yang dapat diekspos ke model pemrograman Shell sebagai kontainer dengan menggunakan sumber data Shell. Item dalam penyimpanan data kemudian dapat diindeks oleh sistem Windows Search menggunakan handler 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. Untuk informasi tentang membuat sumber data Shell, lihat Menerapkan Antarmuka Objek Folder Dasar.

Menambahkan Format File Baru

Jika Anda menambahkan format file kustom baru, Anda perlu mengembangkan handler filter atau handler properti, tetapi tidak keduanya. Filter adalah implementasi antarmuka IFilter. Ini membuka file dari jenis file tertentu, dan memfilter properti dan potongan teks untuk pengindeks. Filter dikaitkan dengan jenis file, seperti yang ditunjukkan oleh ekstensi nama file, jenis MIME, atau pengidentifikasi kelas (CLSID). Meskipun satu filter dapat menangani beberapa jenis file, setiap jenis file hanya berfungsi dengan satu filter.

Handler properti menerjemahkan data yang disimpan dalam file ke dalam skema terstruktur yang dikenali oleh dan dapat diakses oleh Windows Explorer, Windows Search, dan aplikasi lainnya. Sistem ini kemudian dapat berinteraksi dengan handler properti untuk menulis dan membaca properti ke dan dari file. Data yang diterjemahkan mencakup tampilan detail, infotip, panel detail, halaman properti, dan sebagainya. Setiap handler properti dikaitkan dengan jenis file tertentu, yang diidentifikasi oleh ekstensi nama file. Anda memerlukan handler properti untuk melakukan hal berikut:

  • Perlihatkan properti item yang tidak diindeks di UI.
  • Mendukung penulisan properti.

Mengkonsumsi Hasil Pencarian Windows

Bagian berikut ini menjelaskan beberapa cara menggunakan hasil Windows Search:

Mengkueri Data

Pengembang yang menulis aplikasi di atas gabungan Windows Search dan sistem properti Windows dapat mengakses file dan item terlepas dari aplikasi atau jenis file. Ada dua cara bagi aplikasi untuk mengakses data pengindeks:

  • Aplikasi berkomunikasi langsung dengan OLE DB dengan mengirim kueri Windows Search Bahasa Permintaan Terstruktur (SQL) ke penyedia Windows Search OLE DB untuk mengambil hasil. Kueri dapat dibangun secara manual atau dengan menggunakan antarmuka ISearchQueryHelper untuk menghasilkan SQL dari kata kunci pencarian, dan Advanced Query Syntax (AQS).
  • Aplikasi bekerja melalui lapisan Shell. Keuntungan dari lapisan Shell adalah bahwa ia juga mendukung sumber lain seperti grep. Namun, kerugiannya adalah bahwa tidak semua fitur pengindeks tersedia.

Opsi lain adalah menggunakan protokol search-ms:// dan search://, yang menjalankan pencarian berbasis URL yang dirender melalui Windows Explorer. Opsi ini memungkinkan pengembangan dengan bobot paling ringan tetapi tidak mengembalikan hasil atau pilihan pengguna dari tampilan hasil ke aplikasi panggilan. Selain itu, seperti protokol lain, aplikasi pencarian pihak ketiga dapat mengambil alih protokol search-ms:// dan search:// jika aplikasi sesuai dengan set fitur yang diperlukan. Untuk informasi selengkapnya tentang kueri, lihat Proses Kueri di Pencarian Windows dan Mengkueri Indeks secara Terprogram.

Di Windows 7 dan yang lebih baru, pencarian federasi menawarkan penyedia pencarian baru yang meminta penyimpanan data jarak jauh melalui server web, melalui protokol OpenSearch , dan menghitung hasilnya sebagai umpan RSS atau XML Atom. Konektor Pencarian adalah persimpangan namespace yang mensimulasikan perilaku folder dengan menggunakan penyedia pencarian. Untuk informasi selengkapnya tentang federasi pencarian ke penyimpanan data jarak jauh di Windows 7, lihat Pencarian Federasi di Windows.

Mengindeks File dan Item

Konten yang diindeks didasarkan pada file dan jenis data yang didukung melalui add-in yang disertakan dengan Windows Search dan aturan penyertaan dan pengecualian default untuk folder dalam sistem file. Misalnya, filter yang disertakan dalam dukungan Pencarian Jendela lebih dari 200 jenis data umum, termasuk dokumen Microsoft Office, email Microsoft Outlook (bersama dengan handler protokol MAPI), file teks biasa, HTML, dan banyak lagi. Untuk daftar lengkap jenis file yang didukung secara asli, lihat Apa yang Disertakan dalam Indeks.

Indeks dapat diperluas dengan handler properti dan filter untuk mengekspos konten dan properti format file baru ke indeks dan Windows Explorer. Filter adalah implementasi antarmuka IFilter. Ada dua jenis filter: satu yang berinteraksi dengan item individual seperti file dan yang berinteraksi dengan kontainer seperti folder. Filter adalah multi-tujuan karena mendukung pemotongan data, konten teks, beberapa properti, dan beberapa bahasa.

Sebaliknya, penangan properti memiliki tujuan yang lebih spesifik: untuk mengekspos properti jenis file tertentu yang diidentifikasi oleh ekstensi nama file. Handler properti untuk jenis file dapat mengaktifkan dapatkan dan atur properti, dan dapat menghitung properti yang terkait dengan jenis file tersebut. Tidak seperti filter, penangan properti tidak mendukung chucking data atau konten teks, dan penangan properti tidak memiliki cara untuk menunjukkan bahasa apa properti teks berada kecuali mereka mendukung properti penulisan.

Mengindeks Penyimpanan Data

Indeks dapat diperluas dengan handler protokol untuk menyediakan akses ke penyimpanan data milik. Misalnya, file dan item yang terkandung dalam penyimpanan data non-file-system (seperti database dan penyimpanan email) memerlukan handler protokol untuk memetakan dari URL ke aliran. Penangan protokol juga dapat secara opsional menentukan filter yang benar untuk digunakan untuk mengekstrak informasi dari aliran. Filter menghitung URL penyimpanan data. Item kemudian diindeks secara individual menggunakan filter dan/atau handler properti yang tepat. Untuk informasi selengkapnya, lihat Memperluas Indeks.

Mengelola Proses Pengindeksan

Pengembang aplikasi dapat mengontrol cakupan dan frekuensi pengindeksan Windows Search dengan menggunakan berbagai antarmuka manajemen. Antarmuka ini mencakup fungsionalitas untuk menambahkan dan menghapus direktori yang dipindai pengindeks untuk perubahan, memberi tahu indeks perubahan data secara manual, memeriksa status pengindeks, dan memaksa pengindeksan ulang beberapa atau semua data. Untuk informasi selengkapnya, lihat Mengelola Indeks.

Mengintegrasikan Sistem Properti Windows dengan Aplikasi Pencarian Windows

Sistem Properti Windows adalah sistem baca/tulis definisi data yang dapat diperluas yang menyediakan cara yang seragam untuk mengekspresikan metadata tentang item Shell. Sistem Properti Windows di Windows Vista dan yang lebih baru memungkinkan Anda menyimpan dan mengambil metadata untuk item Shell. Item Shell adalah satu konten, seperti file, folder, email, atau kontak. Properti adalah bagian individual metadata yang terkait dengan item Shell. Nilai properti dinyatakan sebagai struktur PROPVARIANT.

Daftar luas properti umum disertakan untuk sejumlah jenis item umum seperti foto, musik, dokumen, pesan, kontak, dan file. Pengembang juga dapat memperkenalkan properti mereka sendiri ke platform jika tidak ada properti yang memenuhi kebutuhan mereka. Untuk informasi selengkapnya tentang mengintegrasikan aplikasi dengan sistem properti Windows, lihat Mengembangkan Penangan Properti.

Gambaran Umum Handler

Handler adalah objek Model Objek Komponen (COM) yang menyediakan fungsionalitas untuk item Shell. Sebagian besar sumber data Shell menawarkan sistem yang dapat diperluas untuk mengikat handler ke item. Misalnya, folder sistem file menggunakan sistem asosiasi untuk mencari handler untuk jenis file tertentu. Handler tertentu diperlukan untuk setiap jenis file. Satu handler filter diperlukan untuk jenis file Adobe Acrobat .pdf, misalnya, handler filter lain diperlukan untuk format file .doc, dan sebagainya.

Penangan yang berbeda memiliki beberapa kesamaan. Di Windows Vista dan yang lebih baru, semua handler harus menggunakan salah satu antarmuka berikut untuk menginisialisasi handler: IInitializeWithStream, IInitializeWithItem, atau IItinitializeWithFile.

Tabel berikut ini mencantumkan tugas pengembang tingkat tinggi, jenis handler yang diperlukan untuk setiap tugas, dan menyediakan tautan ke informasi konseptual tentang cara melakukan setiap tugas.

Tugas Penghandel Informasi konseptual
Mengakses properti file untuk pengindeksan Handler properti Mengembangkan Handler Properti
Properti yang Ditentukan Sistem untuk Format File Kustom
Menambahkan format clipboard untuk objek data (IDataObject) item (Objek data digunakan dalam skenario seret dan letakkan dan salin/tempel.) Penangan objek data Membuat Penangan Data
Menambahkan kata kerja untuk item yang biasanya ditampilkan di menu pintasan Penangan menu pintasan Membuat Penangan Menu Konteks
Menyesuaikan Menu Pintasan Menggunakan Kata Kerja Dinamis
Mengaitkan jenis file dengan ikon tertentu Handler ikon Membuat Handler Ikon
Membuat lembar properti dengan gambar dan kontrol UI yang mengizinkan interaksi kustom dengan jenis file Handler lembar properti Handler Lembar Properti
Mengaktifkan jenis item untuk mendukung skenario seret dan letakkan dan salin/tempel Drop handler Mentransfer Objek Shell dengan Seret dan Letakkan dan Clipboard
Mengekstrak potongan properti teks dan dokumen untuk pengindeksan Penangan filter Mengembangkan Handler Filter
Mengindeks jenis file baru Handler filter, handler properti Mengembangkan Handler Filter
Mengembangkan Handler Properti
Mengindeks konten penyimpanan data Penangan protokol Mengembangkan Handler Protokol
Mempratinjau tampilan item Shell yang disederhanakan di panel pratinjau Windows Explorer Penangan pratinjau Penangan Pratinjau
Menyediakan teks pop-up saat mouse mengarahkan kursor ke objek UI Handler infotip Membuat Penangan Ekstensi Shell (Kustomisasi Infotip)
Menyediakan gambar statis untuk mewakili item Shell Penangan gambar mini Penangan Gambar Mini

 

Tabel berikut mencantumkan handler dan antarmuka untuk mengimplementasikan setiap jenis handler.

Penghandel Antarmuka
Drop handler IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Penangan objek data IDataObject, IPersistFile
Penangan filter IFilter
Handler ikon IExtractIcon
Opsional: IPersist, IPersistFile
Handler infotip IQueryInfo
Penangan pratinjau IPreviewHandler
Handler properti IPropertyStore
Penangan protokol IFilter, ISearchProtocol, IUrlAccessor
Opsional: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Handler lembar properti IShellExtInit, IShellPropSheetExt
Penangan menu pintasan IContextMenu, IExplorerCommand, IShellExtInit
Penangan gambar mini IThumbnailProvider

 

Catatan

Handler properti terkadang digabungkan sebagai handler metadata. Sumber data Shell terkadang dikenal sebagai ekstensi namespace Shell. Handler jenis file terkadang dikenal sebagai handler ekstensi Shell atau ekstensi Shell.

 

Untuk informasi selengkapnya tentang membuat handler, lihat Membuat Penangan Ekstensi Shell. Untuk informasi selengkapnya tentang properti, lihat Sistem Properti Windows.

Panduan Penginstal Add-in

Gunakan panduan berikut saat membuat penginstal Add-in:

  • Alat penginstal harus menggunakan alat penginstal EXE atau MSI.
  • Catatan rilis harus disediakan.
  • Entri Tambahkan/Hapus Program harus dibuat untuk setiap add-in yang terinstal .
  • Alat penginstal harus mengambil alih semua pengaturan registri untuk jenis file tertentu atau menyimpan yang dipahami add-in saat ini.
  • Jika add-in sebelumnya sedang ditimpa, penginstal harus memberi tahu pengguna.
  • Jika add-in yang lebih baru telah menimpa add-in sebelumnya, pengguna harus dapat memulihkan fungsionalitas add-in sebelumnya dan menjadikannya add-in default lagi untuk jenis file atau penyimpanan tersebut.

Catatan untuk Pelaksana

Sebelum membuat filter atau handler properti, pengembang harus mempertimbangkan hal berikut:

  • Handler ini adalah ekstensi dalam proses yang dimuat ke dalam proses yang tidak Anda kontrol, seperti proses daemon filter, Windows Explorer (pencarian grep), dan host pihak ketiga seperti Windows Mail).
  • Anda harus menulis kode aman yang cukup kuat untuk menangani bentuk format file Anda yang rusak secara sewenang-wenang yang dibuat untuk menyerang sistem.
  • Add-in Anda tidak boleh membocorkan sumber daya yang akan menghasilkan masalah untuk proses host.
  • Add-in Anda tidak boleh crash karena ini juga akan merusak proses host dan memperlambat proses pemfilteran.
  • Karena handler ini dijalankan dalam proses sistem latar belakang, mereka harus melakukan dengan cepat dengan minimum CPU dan I/O yang dikonsumsi untuk memenuhi persyaratan performa sistem.

Dengan demikian, add-in ini harus ditulis oleh pengembang dengan keahlian dalam membuat kode tingkat sistem.

Sumber Tambahan

Gambaran Umum Pencarian Windows

Bahasa yang Didukung oleh Windows Search

Menggunakan Kode Terkelola dengan Data Shell dan Windows Search

Panduan Pengembang Windows Search