Mengkueri Indeks dengan ISearchQueryHelper
Anda dapat menggunakan antarmuka ISearchQueryHelper untuk mengkueri indeks. Antarmuka ini diimplementasikan sebagai kelas pembantu ke ISearchCatalogManager (dan ISearchCatalogManager2), dan diperoleh dengan memanggil ISearchCatalogManager::GetQueryHelper. Antarmuka ini memungkinkan Anda untuk:
- Dapatkan string koneksi OLE DB untuk menyambungkan ke database Windows Search.
- Mengonversi kueri pengguna Advanced Query Syntax (AQS) ke Windows Search Bahasa Permintaan Terstruktur (SQL).
- Tentukan pembatasan kueri yang dapat diekspresikan di SQL, tetapi tidak di AQS.
Topik ini diatur sebagai berikut:
- Memulai ISearchQueryHelper
- Menggunakan Metode GenerateSqlFromUserQuery
- Bekerja dengan Pengidentifikasi Lokal
- Bekerja dengan Properti dan Kolom
- Bekerja dengan Ekspansi Istilah Kueri
- Bekerja dengan Metode ISearchQueryHelper Lainnya
- Topik terkait
Memulai ISearchQueryHelper
Ada beberapa antarmuka dan metode utama yang harus Anda waspadai sebelum Anda dapat mulai mengkueri Windows Search secara terprogram menggunakan antarmuka ISearchQueryHelper . Pada tingkat tinggi, Anda perlu mengikuti langkah-langkah berikut:
Membuat instans ISearchManager .
// Create ISearchManager instance ISearchManager* pSearchManager; // Use library SearchSDK.lib for CLSID_CSearchManager. hr = CoCreateInstance(CLSID_CSearchManager, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pSearchManager));
Dapatkan instans ISearchCatalogManager menggunakan ISearchManager::GetCatalog. Nama katalog sistem untuk Windows Search adalah
SYSTEMINDEX
.// Create ISearchCatalogManager instance ISearchCatalogManager* pSearchCatalogManager; // Call ISearchManager::GetCatalog for "SystemIndex" to access the catalog to the ISearchCatalogManager hr = pSearchManager->GetCatalog(L"SystemIndex", &pSearchCatalogManager);
Dapatkan instans ISearchQueryHelper menggunakan ISearchCatalogManager::GetQueryHelper.
// Call ISearchCatalogManager::GetQueryHelper to get the ISearchQueryHelper interface ISearchQueryHelper* pQueryHelper; hr = pSearchCatalogManager->GetQueryHelper(&pQueryHelper);
Setelah Anda memiliki instans ISearchQueryHelper, Anda kemudian bisa mendapatkan string koneksi yang digunakan untuk menyambungkan ke konektor OLE DB indeks Windows Search.
// Call get_ConnectionString to get the OLE DB connection string LPWSTR pszConnectionString=NULL; hr = pQueryHelper->get_ConnectionString(&pszConnectionString); // NOTE: YOU MUST call CoTaskMemFree() on the string
Menggunakan Metode GenerateSqlFromUserQuery
Metode ISearchQueryHelper::GenerateSQLFromUserQuery mengubah input pengguna menjadi string kueri SQL, yang kemudian dapat dikirimkan ke penyedia OLE DB untuk Windows Search. Metode ini menerjemahkan kueri Advanced Query Syntax (AQS) atau Natural Query Syntax (NQS) yang dimasukkan oleh pengguna ke SQL, dan memungkinkan Anda menambahkan fragmen SQL lainnya sesuai kebutuhan.
String kueri SQL dikembalikan dalam formulir berikut:
SELECT <QuerySelectColumns>
FROM <CatalogName that created query helper>
WHERE <Result of interpreting the user query passed into this function according to QuerySyntax>
[ AND|OR <QueryWhereRestrictions> ]
Berikut ini adalah contoh string SQL yang dikembalikan dari panggilan GenerateSQLFromUserQuery("comput")
:
SELECT "System.ItemUrl"
FROM "SystemIndex"
WHERE ((CONTAINS(*,'"comput*"',1033) RANK BY COERCION(Absolute, 1)) OR
(FREETEXT(("System.ItemNameDisplay":0.9, *:0.1), 'comput', 1033) AND CONTAINS(*,'"comput"',1033)))
ORDER BY "System.ItemUrl"
Catatan
Metode ini menghasilkan predikat FREETEXT dan CONTAINS karena CONTAINS saja tidak menghasilkan peringkat yang bermakna.
Bekerja dengan Pengidentifikasi Lokal
Metode | Deskripsi |
---|---|
ISearchQueryHelper::get_QueryContentLocale/ ISearchQueryHelper::p ut_QueryContentLocale |
Mendapatkan/Menempatkan pengidentifikasi kode bahasa (LCID) kueri. Ini membantu mendapatkan pemecah kata dan stemmer yang benar untuk membandingkan istilah kueri dengan katalog/indeks terbalik. Defaultnya adalah lokal input saat ini. |
ISearchQueryHelper::get_QueryKeywordLocale/ ISearchQueryHelper::p ut_QueryKeywordLocale |
Mendapatkan/Menempatkan LCID untuk bahasa yang digunakan saat mengurai kata kunci Advanced Query Syntax (AQS). Defaultnya adalah lokal pengguna default. |
Lokal konten dan lokal kata kunci adalah pengidentifikasi lokal (LCID) yang membantu mesin pencari menggunakan pemecah kata yang benar dengan mengidentifikasi bahasa istilah kueri dan bahasa kata kunci AQS. Ini tidak selalu LCID yang sama karena Windows Search ditawarkan di sejumlah versi internasional dan juga termasuk paket Antarmuka Pengguna Multibahasa (MUI) untuk lebih banyak bahasa. Lokal konten mengidentifikasi LCID untuk pengguna bahasa yang memasukkan kueri pencarian mereka, sementara lokal kata kunci mengidentifikasi LCID yang digunakan mesin pencari saat mengurai kata kunci Advanced Query Syntax (AQS).
Misalnya, jika Anda memiliki versi Bahasa Inggris-AS tanpa paket MUI, lokal konten dan lokal kata kunci adalah 1033. Jika Anda memiliki versi Jerman tanpa paket MUI, maka lokal konten dan lokal kata kunci adalah 1031 (gr-gr). Namun, jika Anda memiliki versi bahasa Inggris dengan paket MUI Rumania, lokal konten adalah 2072 (ro) dan lokal kata kunci adalah 1033 (en-us).
Bekerja dengan Properti dan Kolom
Metode | Deskripsi |
---|---|
ISearchQueryHelper::get_QueryContentProperties/ ISearchQueryHelper::p ut_QueryContentProperties |
Mendapatkan/Mengatur properti konten untuk pencarian (kolom properti yang tercantum dalam klausa CONTAINS atau FREETEXT). |
ISearchQueryHelper::get_QuerySelectColumns/ ISearchQueryHelper::p ut_QuerySelectColumns |
Mendapatkan/Mengatur kolom (atau properti) yang diminta dalam pernyataan SELECT. Defaultnya adalah System.ItemUrl dan properti yang digunakan dalam klausa WHERE. |
Item diwakili di penyimpanan properti sebagai baris. Setiap baris berisi sejumlah kolom yang mewakili properti untuk item tersebut. Tidak semua item akan memiliki nilai untuk properti tertentu. Misalnya, file audio biasanya tidak akan berisi nilai untuk properti System.Property.FromName tetapi mungkin berisi informasi mengenai System.Music.Artist.
Dengan metode ini, Anda mengakses atau memodifikasi properti dengan string Unicode yang dibatasi koma, dihentikan null, yang menentukan satu atau beberapa nama kolom penyimpanan properti: "System.Document.Author, System.Document.Title".
Bekerja dengan Ekspansi Istilah Kueri
Metode | Deskripsi |
---|---|
ISearchQueryHelper::get_QueryTermExpansion ISearchQueryHelper::p ut_QueryTermExpansion |
Mendapatkan/Mengatur bendera ekspansi istilah pencarian. |
Metode ini memungkinkan perluasan beberapa istilah kueri dengan karakter kartubebas, mirip dengan ekspansi ekspresi reguler. Ekspansi awalan mencari kata-kata dengan awalan yang sama (fun/corong). Jika tidak diatur, nilai defaultnya adalah SEARCH_TERM_PREFIX_ALL. Nilai yang didukung dari enumerasi SEARCH_TERM_EXPANSION adalah sebagai berikut:
- SEARCH_TERM_PREFIX_ALL - Semua istilah pencarian diperluas
- SEARCH_TERM_NO_EXPANSION - Tidak ada istilah pencarian yang diperluas
Bekerja dengan Metode ISearchQueryHelper Lainnya
Banyak metode dalam antarmuka ISearchQueryHelper digunakan untuk mengatur argumen kueri atau menentukan properti yang dikembalikan.
Metode | Deskripsi |
---|---|
ISearchQueryHelper::get_ConnectionString |
Mengembalikan string koneksi OLE DB. Ini adalah metode yang disukai untuk mendapatkan string koneksi yang diformat dengan benar dan benar. |
ISearchQueryHelper::get_QueryMaxResults ISearchQueryHelper::p ut_QueryMaxResults |
Mendapatkan/Mengatur jumlah maksimum hasil yang akan dikembalikan oleh kueri (yaitu, SELECT TOP n). Defaultnya adalah -1, yang berarti bahwa tidak ada klausa hasil maksimum yang dihasilkan. |
ISearchQueryHelper::get_QuerySorting ISearchQueryHelper::p ut_QuerySorting |
Mendapatkan/Mengatur urutan pengurutan untuk kumpulan hasil kueri (ORDER BY). Jika tidak ada klausa ORDER BY, hasilnya dikembalikan dalam urutan non-deterministik. |
ISearchQueryHelper::get_QuerySyntax ISearchQueryHelper::p ut_QuerySyntax |
Mendapatkan/Mengatur sintaks kueri: Sintaks Kueri Tingkat Lanjut atau Sintaks Kueri Alami. |
ISearchQueryHelper::get_QueryWhereRestrictions ISearchQueryHelper::p ut_QueryWhereRestrictions |
Mendapatkan/Mengatur pembatasan yang ditambahkan melalui klausa WHERE. |
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk