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
- Gambaran Umum Skenario Pengembangan Pencarian
- Gambaran Umum Handler
- Panduan Penginstal Add-in
- Catatan untuk Pelaksana
- Sumber Tambahan
- Topik terkait
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
- Mengkueri penyimpanan data jarak jauh (Pencarian Federasi)
- Mengindeks file dan item
- Mengindeks penyimpanan data
- Mengelola proses pengindeksan
- Mengintegrasikan Sistem Properti Windows dengan aplikasi 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.
Mengkueri Penyimpanan Data Jarak Jauh (Pencarian Federasi)
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
- Untuk informasi tentang membuat sumber data Shell, lihat Menerapkan Antarmuka Objek Folder Dasar.
- Untuk sumber data yang perlu menggunakan Objek Tampilan Folder Sistem Default Shell (DefView), lihat Menerapkan Tampilan Folder, fungsi SHCreateShellFolderView, dan struktur SFV_CREATE. Sumber data yang menggunakan Objek Tampilan Folder Sistem Default Shell (DefView) harus mengimplementasikan serangkaian antarmuka berikut: IShellFolder, IShellFolder2, IPersistFolder, IPersistFolder2, dan (opsional) IPersistFolder3. Jika implementasi IShellFolder Anda tidak menggunakan SHCreateShellFolderView untuk membuat DefView, objek tampilan Shell mungkin memerlukan IFolderView.
- ISearchFolderItemFactory adalah antarmuka utama untuk konsumen sumber data Shell yang dikenal sebagai DBFolder. Untuk informasi selengkapnya tentang DBFolder, lihat deskripsi konstanta STR_PARSE_WITH_PROPERTIES dalam Kunci String Konteks Ikat. Lihat juga Array Asosiasi dan IPropertySystem::GetPropertyDescriptionListFromString.
- Untuk informasi tentang OLE DB, lihat Gambaran Umum Pemrograman OLE DB. Untuk informasi tentang Penyedia Data .NET Framework untuk OLE DB, lihat dokumentasi Namespace Layanan System.Data.OleDb.
- Untuk papan pesan yang didukung komunitas pada teknologi Pencarian, lihat Windows: Cari Forum.
- Untuk sampel kode terkait, lihat Sampel Kode Pencarian Windows.
Topik terkait