Pochopení zpracovatelů protokolů
Některé aplikace ukládají své položky do databází nebo vlastních typů souborů. Windows Search sice může indexovat název a vlastnosti souboru, ale Systém Windows nemá žádné znalosti o obsahu souboru. V důsledku toho nelze tyto položky indexovat ani vystavit v prostředí Windows Shell. Vytvořením obslužné rutiny protokolu můžete tyto položky zpřístupnit pro indexování. Můžete také indexovat složený formát souboru, například .zip soubor.
Toto téma je uspořádané takto:
-
indexování úložišť dat pomocí obslužných rutin protokolu
- Shell – úložiště dat
- Obslužné Rutiny Protokolu
- filtry a obslužné rutiny protokolu
- Indexování formátu složeného souboru
- související témata
Indexování úložišť dat pomocí obslužných rutin protokolu
Když uživatelé potřebují hledat starší databáze, úložiště e-mailů nebo jiné datové struktury, které služba Windows Search nepodporuje, měli byste nejprve určit, jestli už pro toto úložiště dat existuje obslužná rutina protokolu, třeba pro použití s jinou aplikací, jako je SharePoint Server. Pokud ano, můžete tuto obslužnou rutinu protokolu nainstalovat do systému. Handlers protokolu Windows Search používají specifikace návrhu podobné SharePoint Serveru a je možné je často používat zaměnitelně.
Další informace o nasazení vyhledávacího serveru 2008 s Office SharePoint Serverem 2007 najdete v tématu federované vyhledávání [Search Server 2008].
Úložiště dat Shell
Než vývojář třetí strany nových formátů souborů a úložišť dat umožní zobrazení těchto formátů a úložišť ve výsledcích dotazů v Průzkumníku Windows, musí implementovat zdroj dat prostředí Shell. Zdroj dat Shell je komponenta, která se používá k rozšíření oboru názvů Shell a zobrazení položek v úložišti dat. Úložiště dat je místo, kde se ukládají data. Úložiště dat může být vystaveno programovacímu modelu Shell jako kontejner, který používá zdroj dat Shell. Položky v úložišti dat lze indexovat systémem Windows Search pomocí obslužné rutiny protokolu. Obslužná rutina protokolu implementuje protokol pro přístup ke zdroji obsahu v nativním formátu. Rozhraní ISearchProtocol a ISearchProtocol2 rozhraní se používají k implementaci vlastní obslužné rutiny protokolu k rozšíření zdrojů dat, které lze indexovat.
Pokud chcete, aby se výsledky dotazu zobrazovaly v Průzkumníku Windows, musíte nejprve implementovat datový zdroj Shell, než budete moci vytvořit obslužnou rutinu protokolu pro rozšíření indexu. Pokud však budou všechny dotazy programové (například prostřednictvím OLE DB) a interpretovány kódem aplikace místo shellu, pak není striktně nutné použít obor názvů shellu, i když je stále preferovaný.
Poznámka
Zdroj dat Shell se někdy označuje jako rozšíření oboru názvů Shellu. Obslužná rutina se někdy označuje jako rozšíření prostředí nebo shellové rozšíření.
Pokud chcete, aby si uživatelé zobrazili výsledky hledání z Průzkumníka Windows, musíte vytvořit obslužnou rutinu protokolu a jeden nebo několik následujících doplňků:
- Obslužný modul místní nabídky
- Správce ikon
- Jiný typ zpracovatele souboru
Seznam obslužných rutin, které jsou identifikovány scénářem vývoje, kterého se pokoušíte dosáhnout, najdete v části "Přehled obslužných rutin" ve Windows Search jako vývojová platforma. Informace o vytváření obslužných rutin naleznete v tématech: Registrace rozšíření prostředí, Kontextová nabídkaa Obslužné rutiny pro typy souborů.
Obslužné rutiny protokolu
Pokud je úložištěm dat také kontejner (například složka systému souborů), musíte implementovat filtr pro výčet adres URL v kontejneru. Pokud úložiště dat obsahuje data nebo jiné typy souborů než jeden z 200 typů souborů podporovaných službou Windows Search, musíte implementovat filtr pro přístup k obsahu položek v úložišti a jeho indexování. Windows Search používá obslužnou rutinu protokolu a technologii IFilter podobnou technologii, kterou používá SharePoint Server. Pokud už máte filtry pro určité úložiště a typ souboru nainstalované v indexovaném systému, může služba Windows Search k indexování těchto dat používat existující rozhraní.
Přehled procesu indexování najdete v tématu Proces indexování. Koncepční informace o obslužných rutinách filtru najdete v tématu Vývoj obslužných rutin filtru.
Filtry a obslužné rutiny protokolu
Obslužné rutiny protokolu poskytují indexeru Windows Search přístup k úložišti dat, což indexeru umožňuje procházet uzly úložiště dat a extrahovat relevantní informace pro indexování. Windows Search se například dodává s obslužnými rutinami protokolu pro úložiště systému souborů a pro některé verze obou úložišť dat aplikace Microsoft Outlook. Při indexování e-mailu Outlooku obslužná rutina protokolu prochází všechny zprávy v sadě složek Outlooku a extrahuje informace z každé zprávy a přílohy. Tyto informace se předají indexeru pro zahrnutí do katalogu Služby Windows Search.
Přehled správce katalogu a správce oboru procházení (CSM) najdete v tématu Použití správce katalogu a Použití správce oboru procházení.
Indexování složeného formátu souboru
Složený formát souboru lze indexovat tak, aby jednotlivé položky v souboru mohly být vráceny jako jednotlivé výsledky. Složený formát souboru, jako je komprimovaný soubor s příponou názvu souboru .zip, je v podstatě úložiště dat a může být považováno za účelem indexování. Následující příklad zobrazí soubor .zip v oboru názvů systému souborů (FILE://c:/test/test.zip), ve kterém jsou podsložky i jednotlivé položky.
Test.zip
|-folder1
| |-folder2
| |- FileX.txt
|- FileY.doc
Obslužná rutina protokolu FILE zjistí, když dojde ke změně FILE://c:/test/test.zip sledováním protokolů změn systému souborů, a vyvolá IFilter zaregistrovaný pro soubory .zip na tomto souboru, jakmile se soubor změní, ale nemá žádné informace o vnitřní struktuře samotného souboru .zip.
Musíte informovat indexer, že složený formát souboru je úložiště dat. Je nutné to udělat, aby se jednotlivé položky indexovaly a načetly jako jedinečné entity. Po implementaci zdroje dat Shellu a provedení následujících kroků budete mít obslužnou rutinu protokolu, která může zpracovávat a vystavit data ze složeného formátu souboru (.zip souboru) jako jednotlivé položky.
Informovat indexer, že složený soubor je úložiště dat:
Vytvořte obslužnou rutinu protokolu (pomocí ISearchProtocol nebo ISearchProtocol2) pro .zip soubory, která má schopnost se svázat se zdrojovým souborem. Další informace naleznete v tématu Instalace a registrace obslužných rutin protokolu.
Můžete například použít escapovanou cestu k souboru .zip jako název kořenové složky a pak použít hierarchickou syntaxi jako u jiného formátu souboru.
.zip:///escapedPathTo.zipFile/.zipfolder/.../.zipfile
Při použití výše uvedených ukázkových dat pro c:\test\test.zipby jedinečné adresy URL byly následující. U těchto adres URL má obslužná rutina protokolu informace potřebné k vytvoření vazby k souboru .zip a vytvoření výčtu podřízených adres URL včetně vnitřních souborů, aby je bylo možné svázat a indexovat pomocí filtrů .doc a .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
Ujistěte se, že obslužná rutina protokolu splňuje následující dvě podmínky:
- Kořenové adresy URL souboru .zip by měly generovat PKEY_Search_IsClosedDirectory (System.Search.IsClosedDirectory) na adresách URL, které jsou kořenovými adresami URL .zip souborů. Například .zip:///FILE:%2f%2f%2fc:%2ftest%2ftest.zip/ by měl generovat IsClosedDirectory = TRUE. To říká indexeru, že pokud se datum na této adrese URL nezměnilo, nemusí zpracovávat žádné podřízené adresy URL.
- Každá podřízená adresa URL této adresy URL by měla generovat PKEY_Search_IsFullyContained (System.Search.IsFullyContained) na podřízených adresách URL kořenové .zip adresy URL. Indexer za normálních okolností na konci přírůstkového procházení považuje všechny nevislé adresy URL za položky, které by se měly odstranit. Kořenový soubor .zip by ale neměl zpracovávat kořenové adresy URL, protože se nic nezměnilo. Generování této vlastnosti jako TRUE říká indexeru, že pokud tato adresa URL nebyla zpracována na konci přírůstkového procházení, neměla by být odstraněna. Odstraní se pouze v případě, že se kořenová položka změnila a nenavštěvuje se.
Služba Windows Search vyžaduje pro protokol úvodní stránku, aby bylo možné zjistit, jaké adresy URL se mají přírůstkově procházet a které adresy URL by se měly při jejich nalezení ignorovat. Nemůžeme ale začít s adresou URL pro každý .zip soubor, protože nevíme, kde je každý .zip soubor. Proto adresa URL úvodní stránky obslužné rutiny protokolu .zip musí být schopna zobrazit výčet všeho v kořenovém adresáři řídicích cest všech .zip souborů. Tyto .zip soubory nemusí být nutně v oboru názvů FILE: a může se jednat například o adresu URL typu MAPI, která odkazuje na soubor .zip jako přílohu.
Registrace kořenového adresáře jako úvodní stránky:
Zaregistrujte kořen, například .zip:///, jako úvodní stránku tak, aby všechny .zip soubory začínaly zde. Obslužná rutina protokolu by měla při zpracování kořenové .zip: ADRESA URL vygenerovat seznam podřízených adres URL k emitování; to se provede dotazem na službu Windows Search na všechny adresy URL s System.FileExtension = ".zip".
Upravte tyto adresy URL, abyste odstranili z nich lomítka a vrátili je jako odvozené adresy URL. Příklad dotazu, který načte požadované typy, může vypadat následovně.
SELECT system.itemurl, System.DateModified FROM SystemIndex WHERE System.FileExtension='.zip' OR System.MimeType='mimetypefor.zip'
Pokud služba Windows Search pravidelně provádí přírůstkové procházení vaší kořenové adresy URL .zip, měli byste zaslat seznam adres URL, které služba Windows Search již udržuje, a které jsou .zip adresami URL. Pokud je odstranění zjištěno v nativním úložišti, kde je uložen .zip soubor, nezobrazí se ve výčtu a tato větev stromu v .zip se odebere.
Pokud chcete připojit se k datům .zip pro jinou obslužnou rutinu protokolu, měli byste ideálně projít přes IShellFolder pro tuto adresu URL, abyste navázali vazbu na úložiště objektu, a neměli byste předpokládat, že se jedná vždy o soubor. Díky tomu můžete flexibilně pracovat s přílohami v poštovních obchodech, například.
Při generování podřízených adres URL pro každý .zip soubor byste měli použít PKEY_Search_UrlToIndexWithModificationTime (System.Search.UrlToIndexWithModificationTime) a předat PKEY_DateModified (System.DateModified) skutečného souboru .zip tak, aby indexer procházel .zip soubor pouze v případě, že se změnil.
Pokud chcete, aby se adresy URL .zip indexovaly hned po jejich vytvoření nebo úpravě a abyste nemuseli čekat, až přírůstkové procházení zjistí jejich nový stav, můžete sami sledovat systém souborů za .zip změn souborů. Takový přístup by ale nefungoval pro jiná úložiště dat, jako je MAPI.
, aby se adresy URL .zip indexovaly při jejich vytvoření nebo úpravě:
- Vytvořte filtr (a implementaci rozhraní IFilter) pro typ .zip souboru. Další informace naleznete v tématu Vývoj obslužných rutin vlastností pro Windows Search.
- Kdykoli je volána implementace IFilter, je to proto, že byla zjištěna nebo změněna adresa URL. Potom vygenerujte událost pro adresu URL .zip odpovídající zdrojové adrese URL prostřednictvím rozhraní IGatherNotifyInline. Tím můžete ihned sdělit indexeru, že se mají indexovat nová data, aniž byste museli čekat na inkrementální procházení.
Související témata