Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az index lekérdezéséhez használhatja az ISearchQueryHelper felületet. Ez az interfész az ISearchCatalogManager(és ISearchCatalogManager2)segédosztályaként van implementálva, és ISearchCatalogManager::GetQueryHelpermeghívásával érhető el. Ez a felület lehetővé teszi, hogy:
- Szerezze be az OLE DB kapcsolati sztringet a Windows Search-adatbázishoz való csatlakozáshoz.
- Speciális lekérdezési szintaxis (AQS) felhasználói lekérdezések konvertálása a Windows Search strukturált lekérdezési nyelvre (SQL).
- Adja meg az SQL-ben kifejezhető, de az AQS-ben nem kifejezhető lekérdezési korlátozásokat.
Ez a témakör a következőképpen van rendszerezve:
- Első lépések az ISearchQueryHelper
- GenerateSqlFromUserQuery metódus használata
- Területi azonosítók használata
- Tulajdonságok és oszlopok használata
- Munka a lekérdezési kifejezésbővítéssel
- Egyéb ISearchQueryHelper metódusok használata
- Kapcsolódó témakörök
Az ISearchQueryHelper használatának első lépései
Az ISearchQueryHelper felület használatával a Windows Search programozott lekérdezése előtt érdemes tisztában lennie néhány fontos felülettel és módszerrel. Magas szinten az alábbi lépéseket kell követnie:
Példányosít egy ISearchManager-példányt.
// Create ISearchManager instance ISearchManager* pSearchManager; // Use library SearchSDK.lib for CLSID_CSearchManager. hr = CoCreateInstance(CLSID_CSearchManager, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pSearchManager));Szerezze be az ISearchCatalogManager példányát ISearchManager::GetCataloghasználatával. A Windows Search rendszerkatalógusának neve
SYSTEMINDEX.// Create ISearchCatalogManager instance ISearchCatalogManager* pSearchCatalogManager; // Call ISearchManager::GetCatalog for "SystemIndex" to access the catalog to the ISearchCatalogManager hr = pSearchManager->GetCatalog(L"SystemIndex", &pSearchCatalogManager);Szerezze be az ISearchQueryHelper példányát az ISearchCatalogManager::GetQueryHelperhasználatával.
// Call ISearchCatalogManager::GetQueryHelper to get the ISearchQueryHelper interface ISearchQueryHelper* pQueryHelper; hr = pSearchCatalogManager->GetQueryHelper(&pQueryHelper);Miután rendelkezik az ISearchQueryHelperpéldányával, lekérheti a Windows Search index OLE DB-összekötőjéhez való csatlakozáshoz használt kapcsolati sztringet.
// 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
A GenerateSqlFromUserQuery metódus használata
A ISearchQueryHelper::GenerateSQLFromUserQuery metódus a felhasználói bemenetet SQL-lekérdezési sztringgé alakítja át, amelyet aztán elküldhet a Windows Search OLE DB-szolgáltatójának. Ez a módszer lefordítja a Speciális lekérdezési szintaxis (AQS) vagy a felhasználó által megadott természetes lekérdezésszintaxis (NQS) lekérdezést az SQL-be, és szükség szerint más SQL-töredékeket is hozzáadhat.
Az SQL-lekérdezési sztring a következő formában lesz visszaadva:
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> ]
Az alábbi példa a hívásból visszaadott SQL-sztringre 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"
Jegyzet
A metódus a FREETEXT és a CONTAINS predikátumokat is létrehozza, mivel a CONTAINS önmagában nem hoz létre értelmes rangsorolást.
Területi azonosítók használata
| Módszer | Leírás |
|---|---|
|
ISearchQueryHelper::get_QueryContentLocale/ ISearchQueryHelper::put_QueryContentLocale |
Lekéri/elhozza a lekérdezés nyelvkód-azonosítóját (LCID). Ez segít beszerezni a megfelelő szóelválasztót és szótövezőt, hogy összehasonlítsa a lekérdezési kifejezéseket a katalógussal/invertált indexszel. Az alapértelmezett beállítás az aktuális bemeneti területi beállítás. |
|
ISearchQueryHelper::get_QueryKeywordLocale/ ISearchQueryHelper::put_QueryKeywordLocale |
Lekéri/beállítja a Speciális Lekérdezési Szintaxis (AQS) kulcsszavak elemzésekor használni kívánt nyelv LCID-jét. Az alapértelmezett a felhasználó alapértelmezett területi beállítása. |
A tartalom területi és kulcsszó területi olyan területi azonosítók (LCID), amelyek segítenek a keresőmotornak a megfelelő szóhatárolók használatára a lekérdezési kifejezések nyelvének és az AQS-kulcsszavak nyelvének azonosításával. Ezek nem mindig ugyanazok az LCID-k, mivel a Windows Search számos nemzetközi verzióban érhető el, és többnyelvű felhasználói felületi (MUI) csomagokat is tartalmaz több nyelvhez. A tartalom területi beállítása azonosítja az LCID-t azon nyelvhez, amelyben a felhasználók beadják a keresési lekérdezést, míg a kulcsszó területi beállítása azonosítja azt az LCID-t, amelyet a keresőmotor használ az Advanced Query Szintaxis (AQS) kulcsszavak elemzésekor.
Ha például a English-US verzió MUI csomag nélkül érhető el, akkor a tartalom területi beállítása és a kulcsszó területi beállítása 1033. Ha a német verzió muI-csomagokkal nem rendelkezik, akkor a tartalom területi beállítása és a kulcsszó területi beállítása 1031 (gr-gr). Ha azonban a román MUI-csomaggal rendelkező angol verzióval rendelkezik, a tartalom területi beállítása 2072 (ro), a kulcsszó területi beállítása pedig 1033 (en-us).
Tulajdonságokkal és oszlopokkal való munka
| Módszerek | Leírás |
|---|---|
|
ISearchQueryHelper::get_QueryContentProperties/ ISearchQueryHelper::put_QueryContentProperties |
Lekéri/beállítja a keresés tartalomtulajdonságait (a CONTAINS vagy a FREETEXT záradékokban felsorolt tulajdonságoszlop). |
|
ISearchQueryHelper::get_QuerySelectColumns/ ISearchQueryHelper::p ut_QuerySelectColumns |
Lekéri/beállítja a SELECT utasításban kért oszlopokat (vagy tulajdonságokat). Az alapértelmezett érték a System.ItemUrl és a WHERE záradékban használt tulajdonságok. |
Az elemek sorként jelennek meg a tulajdonságtárolóban. Minden sor több oszlopot tartalmaz, amelyek az adott elem tulajdonságait jelölik. Nem minden elemnek lesz értéke egy adott tulajdonsághoz. Egy hangfájl például általában nem tartalmaz értéket a System.Property.FromName tulajdonsághoz, de a System.Music.Artist tulajdonsággal kapcsolatos információkat is tartalmazhat.
Ezekkel a metódusokkal egy vesszővel tagolt, null értékű Unicode-sztringgel érheti el vagy módosíthatja a tulajdonságot, amely a tulajdonságtároló egy vagy több oszlopnevét adja meg: "System.Document.Author, System.Document.Title".
Lekérdezési kifejezésbővítés használata
| Módszerek | Leírás |
|---|---|
|
ISearchQueryHelper::get_QueryTermExpansion ISearchQueryHelper::put_QueryTermExpansion |
Lekéri/beállítja a kifejezésbővítés jelzőt. |
Ez a módszer lehetővé teszi egyes lekérdezési kifejezések helyettesítő karakterekkel való kiterjesztését, hasonlóan a reguláris kifejezésbővítéshez. Az előtagbővítés ugyanazzal az előtaggal (fun/tölcsér) rendelkező szavakat keres. Ha nincs beállítva, az alapértelmezett érték SEARCH_TERM_PREFIX_ALL. A SEARCH_TERM_EXPANSION enumerálás támogatott értékei a következők:
- SEARCH_TERM_PREFIX_ALL – Az összes keresési kifejezés ki van bontva
- SEARCH_TERM_NO_EXPANSION – Nincs keresési kifejezés kibontva
Más ISearchQueryHelper metódusok használata
Az ISearchQueryHelperszámos metódusa lekérdezési argumentumok beállítására vagy a visszaadott tulajdonságok meghatározására szolgál.
| Módszerek | Leírás |
|---|---|
|
ISearchQueryHelper::get_ConnectionString |
Az OLE DB kapcsolati sztringet adja vissza. Ez az előnyben részesített módszer egy megfelelően formázott és helyes kapcsolati karakterlánc lekérésére. |
|
ISearchQueryHelper::get_QueryMaxResults ISearchQueryHelper::put_QueryMaxResults |
Lekéri/beállítja a lekérdezés által visszaadandó eredmények maximális számát (azaz a SELECT TOP n). Az alapértelmezett érték -1, ami azt jelenti, hogy a rendszer nem hoz létre maximális találati záradékot. |
|
ISearchQueryHelper::get_QuerySorting ISearchQueryHelper::put_QuerySorting |
Lekéri/beállítja a lekérdezés eredményhalmazának rendezési sorrendjét (ORDER BY). Ha nincs ORDER BY záradék, a rendszer nem determinisztikus sorrendben adja vissza az eredményeket. |
|
ISearchQueryHelper::get_QuerySyntax ISearchQueryHelper::put_QuerySyntax |
Lekéri/beállítja a lekérdezés szintaxisát: Speciális lekérdezési szintaxis vagy természetes lekérdezési szintaxis. |
|
ISearchQueryHelper::get_QueryWhereRestrictions ISearchQueryHelper::put_QueryWhereRestrictions |
Lekéri/beállítja a WHERE záradékokkal kiegészített korlátozásokat. |
Kapcsolódó témakörök
-
Sql és AQS-megközelítések használata az index lekérdezéséhez