Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp worden de drie fasen van het indexeringsproces en de primaire onderdelen beschreven die bij elk proces betrokken zijn, wordt de timing van de indexeringsactiviteit uitgelegd en worden enkele opmerkingen gegeven voor externe ontwikkelaars die hun gegevensarchieven of bestandsindelingen willen indexeren.
Dit onderwerp is als volgt ingedeeld:
- Overzicht
- fase 1: URL's in de wachtrij plaatsen voor indexering
- fase 2: URL's verkennen
- fase 3: de index bijwerken
- Hoe indexering wordt gepland
- Notities voor implementatoren
- Verwante onderwerpen
Overzicht
Windows Search ondersteunt het indexeren van eigenschappen en inhoud van bestanden met verschillende bestandsindelingen, zoals .doc- of .jpeg-indelingen, en gegevensarchieven, zoals het bestandssysteem of Windows Outlook-postvakken. Er zijn twee soorten indexen: waardeindexen die filteren en sorteren op de hele waarde van een eigenschap en omgekeerde indexen die woorden indexeren binnen teksteigenschappen of inhoud. Als u een aangepaste bestandsindeling of gegevensopslag hebt, moet u begrijpen hoe Windows Search indexeert om uw items correct te kunnen indexeren.
Het indexeringsproces vindt plaats in drie fasen die worden beheerd door een Windows Search-onderdeel dat de gegevensverzamelaar wordt genoemd. In de eerste fase voegt de gegevensverzamelaar URL's toe aan wachtrijen. De URL's identificeren items die moeten worden geïndexeerd en de wachtrijen zijn slechts lijsten met URL's met prioriteit. In de tweede fase coördineert de gegevensverzamelaar andere Onderdelen van Windows Search en onderdelen van derden om toegang te krijgen tot de items en gegevens over deze items te verzamelen. Ten slotte worden in de derde fase de verzamelde gegevens toegevoegd aan de index.
In het volgende diagram ziet u de belangrijkste onderdelen en de stroom van gegevens via het indexeringsproces. Een aantal onderdelen zijn betrokken bij het verzamelen van gegevens voor de index. Sommige hiervan maken deel uit van Windows Search en sommige zijn afkomstig van toepassingen van derden. Als u een aangepast gegevensarchief of een aangepaste bestandsindeling hebt, is Windows Search afhankelijk van uw protocolhandler en filter voor toegang tot URL's en het verzenden van eigenschappen voor indexering. Windows Search-onderdelen worden blauw weergegeven en onderdelen van derden worden groen weergegeven.
Fase 1: URL's in de wachtrij voor indexering
In de eerste fase van het indexeren verzamelt de gegevensverzamelaar informatie over updates voor gegevensarchieven, vergelijkt deze informatie met het bekende verkenningsbereik en bouwt vervolgens een wachtrij met URL's om gegevens voor de index te verzamelen. Voor bronnen die niet zijn gebaseerd op meldingen, zoals FAT-stations, start de gegevensverzamelaar periodiek een volledige doorkruising van het verkenningsbereik, zodat de gegevens in de index actueel blijven. Voor bronnen zoals NTFS is er slechts één verkenning en wordt al het andere afgehandeld door meldingen van de USN Change Journal. Er is ook geen indexering van Microsoft Outlook. In het volgende diagram ziet u een overzicht van het wachtrijproces voor niet-crawl-indexering.
In de rest van deze sectie wordt uitgelegd hoe Windows Search bepaalt welke URL's moeten worden verkend en hoe belangrijke termen onderweg worden gedefinieerd.
verkenningsbereik Het verkenningsbereik is een set URL's die Windows Search doorkruist om gegevens te verzamelen over items die de gebruiker wil indexeren voor snellere zoekopdrachten. Windows Search voegt standaard enkele URL's toe aan het verkenningsbereik, zoals paden naar de Documenten en Afbeeldingen mappen. Andere URL's kunnen worden toegevoegd door toepassingen, gebruikers en groepsbeleid van derden. Ten slotte kunnen zowel gebruikers als groepsbeleid URL's expliciet uitsluiten. Windows Search gebruikt alle toegevoegde URL's en verwijdert de uitgesloten URL's om het verkenningsbereik te bepalen. Dit is de werkset URL's waaruit de gegevensverzamelaar het werk begint.
Gatherer De gegevensverzamelaar is een Windows Search-onderdeel dat informatie verzamelt over URL's binnen het verkenningsbereik en een wachtrij met URL's maakt voor de indexeerfunctie die moet worden verkend. Wanneer een item in het verkenningsbereik wordt toegevoegd, verwijderd of bijgewerkt, wordt de gegevensverzamelaar op de hoogte gebracht door de meldingenprovider van het gegevensarchief. Er is een eerste verkenning waarbij de crawler begint bij het beginpunt van het verkenningsbereik. De URL wordt doorgegeven aan de protocolhandler en vervolgens aan de juiste IFilter. Het filter is meestal een directory-inventarisatie die meer URL's produceert. Meldingen zijn de stabiele toestand. Normaal gesproken heeft elk gegevensarchief een eigen protocolhandler die deze meldingen biedt. Op het lokale bestandssysteem fungeert de USN Change Journal bijvoorbeeld als een meldingsprovider voor alle URL's onder het file:// protocol. Op dezelfde manier fungeert Microsoft Outlook als een meldingsprovider voor alle URL's onder het protocol mapi://. Wanneer een gebruiker e-mail ontvangt, verplaatst of verwijdert, meldt Outlook de gegevensverzamelaar van de gewijzigde status van het e-mailbericht. Vanuit deze meldingen maakt de gegevensverzamelaar indexeringswachtrijen van URL's die moeten worden verkend.
Wachtrijen indexeren De indexeringswachtrijen zijn lijsten met URL's waarmee items worden geïdentificeerd die moeten worden geïndexeerd of opnieuw moeten worden geïndexeerd. De gegevensverzamelaar vergelijkt de URL's die deze ontvangt van meldingenproviders met de URL's in het verkenningsbereik. Elke URL van meldingenproviders die binnen het verkenningsbereik vallen, wordt toegevoegd aan een wachtrij die de gegevensverzamelaar gebruikt om te bepalen welke URL's hierna moeten worden verwerkt.
Er zijn drie wachtrijen: meldingen met hoge prioriteit, normale meldingen en periodieke crawls. De wachtrij met hoge prioriteit is bedoeld voor meldingen die onmiddellijk moeten worden verwerkt. Wanneer een gebruiker bijvoorbeeld de titeleigenschap van een item wijzigt in Windows Verkenner, moet de weergave Windows Verkenner direct na de wijziging worden bijgewerkt. De normale meldingswachtrij is voor alle resterende wijzigingsmeldingen. De meldingswachtrijen worden verwerkt vóór de verkenningswachtrij, omdat gewijzigde items waarschijnlijk interessanter zijn voor een gebruiker. De verzamelaar heeft toegang tot gegevens voor de URL's in elke wachtrij in de first in, first out (FIFO) volgorde.
Zie Prioriteits- en rijset-gebeurtenissen indexeren in Windows 7voor meer informatie over prioriteitsaanduiding en gebeurtenis-API's die zijn geïntroduceerd in Windows 7. Voor meer informatie over het beheer van het verkenningsbereik en kennisgevingen, zie Kennisgevingen van wijzigingen en Gebruik van de Beheerder van het Verkenningsbereik.
Fase 2: url's verkennen
In de tweede fase van het indexeren verkent de gegevensverzamelaar de wachtrijen, verkrijgt toegang tot gegevensarchieven en haalt itemstreams op. Eerst zoekt de gegevensverzamelaar de juiste protocolhandler voor elke URL. Vervolgens geeft de gegevensverzamelaar de URL door aan de protocolhandler. De protocolhandler opent het item en geeft metagegevens van items weer door aan de gegevensverzamelaar. De gegevensverzamelaar gebruikt de metagegevens om het juiste filter te identificeren.
In het volgende diagram ziet u een weergave op hoog niveau van het URL-verkenningsproces. Deze fase omvat aanzienlijke coördinatie en communicatie tussen onderdelen.
In de rest van deze sectie wordt beschreven hoe Windows Search toegang heeft tot items voor het indexeren en uitlegt over de rollen van elk van de betrokken onderdelen.
Gatherer In fase 2 verwerkt de gegevensverzamelaar de URL's in de wachtrijen, te beginnen met de wachtrij met hoge prioriteit. Elke URL wordt onderzocht om het protocol te identificeren. De gegevensverzamelaar zoekt vervolgens de protocolhandler op die is geregistreerd voor dat protocol en instantieert deze in het hostproces van het zoekprotocol.
Search Protocol Host De host van het zoekprotocol is slechts een vak, hostproces voor protocolhandlers. Windows Search maakt doorgaans twee dergelijke hostprocessen, een die wordt uitgevoerd in de systeembeveiligingscontext en een die wordt uitgevoerd in de gebruikersbeveiligingscontext. Deze scheiding zorgt ervoor dat gegevens die specifiek zijn voor een gebruiker nooit worden uitgevoerd in de systeemcontext.
Windows Search maakt ook gebruik van het hostproces om een exemplaar van een protocolhandler te isoleren van andere processen of toepassingen. Op deze manier heeft geen externe toepassing toegang tot dat specifieke exemplaar van de protocolhandler en als de protocolhandler onverwacht mislukt, wordt alleen het indexeringsproces beïnvloed. Omdat het hostproces code van derden (protocolhandlers) uitvoert, recyclet Windows Search het proces regelmatig om de tijd te minimaliseren dat een geslaagde aanval informatie in het proces moet misbruiken. Verder heeft de host van het zoekprotocol geen invloed op het verkennen van URL's of het indexeren van items.
Protocolhandlers Protocol-handlers bieden toegang tot items in een gegevensarchief met behulp van het protocol van het gegevensarchief. De NTFS-protocolhandler biedt bijvoorbeeld toegang tot bestanden op een lokaal station met behulp van het file://-protocol. De protocolhandler weet hoe het gegevensarchief moet worden doorkruist, nieuwe of bijgewerkte items moet identificeren en de gegevensverzamelaar op de hoogte moet stellen. Wanneer het verkennen begint, biedt de protocolhandler vervolgens een IUrlAccessor--object aan de gegevensverzamelaar om verbinding te maken met de onderliggende stroom van het item en metagegevens van items te retourneren, zoals beveiligingsbeperkingen en de laatste wijzigingstijd.
Notitie
Protocolhandlers zijn geen Windows Search-onderdelen; ze zijn onderdelen van het specifieke protocol en het gegevensarchief die ze zijn ontworpen voor toegang. Als u een aangepast gegevensarchief hebt dat u wilt indexeren, moet u een protocolhandler implementeren. Raadpleeg Het ontwikkelen van protocolhandlersvoor meer informatie over protocolhandlers en het implementeren ervan.
Metagegevens en Stream Met behulp van metagegevens die zijn geretourneerd door het IUrlAccessor--object van de protocolhandler, identificeert de gegevensverzamelaar het juiste filter voor de URL. De gegevensverzamelaar parseert de bestandsnaamextensie van het item en zoekt het filter op dat is geregistreerd voor die extensie. Als de gegevensverzamelaar geen filter kan vinden, gebruikt Windows Search de metagegevens om een minimale set systeemeigenschapsgegevens (zoals System.ItemName) af te leiden en de index bij te werken. Als de gegevensverzamelaar het filter vindt, begint de derde fase van het indexeren.
Fase 3: de index bijwerken
In de derde fase van het indexeren instantieert de gegevensverzamelaar het juiste filter voor de URL en initialiseert het filter met de stroom uit het IUrlAccessor--object. Het filter opent vervolgens het item en retourneert inhoud voor de index. Als u een aangepaste bestandsindeling hebt, is Windows Search afhankelijk van uw filter voor toegang tot URL's en het verzenden van inhoud en eigenschappen voor indexering.
In het volgende diagram ziet u een weergave op hoog niveau van het gegevenstoegangsproces. Deze fase omvat aanzienlijke coördinatie en communicatie tussen onderdelen.
In de rest van deze sectie wordt beschreven hoe Windows Search itemgegevens voor indexering opent en de rollen van elk van de betrokken onderdelen uitlegt.
Gatherer Aan het begin van deze fase is de rol van de gegevensverzamelaar om het juiste filter voor het item te instantiëren en door te geven aan de itemstroom. Aan het einde van deze fase neemt de gegevensverzamelaar de inhoud en eigenschappen die worden verzonden door de filter- en eigenschapshandler en werkt de index bij.
filterhost De filterhost is slechts een hostproces voor filters en eigenschapshandlers en dient een doel dat vergelijkbaar is met de host van het zoekprotocol. Het hostproces isoleert filters en eigenschapshandlers van de rest van het systeem om dezelfde redenen van beveiliging en stabiliteit als waarmee de host van het zoekprotocol protocolhandlers isoleert. Het hostproces wordt uitgevoerd met minimale rechten (het heeft zelfs geen toegang tot het bestandssysteem) en wordt af en toe gerecycled om te beschermen tegen beveiligingsaanvallen. Windows Search bewaakt ook het resourcegebruik, zodat als een filter te veel resources verbruikt, het hostproces wordt gerecycled.
Filters Filters zijn essentiële onderdelen in het indexeringsproces waarmee itemgegevens voor de gegevensverzamelaar worden verzonden. Filters worden genoemd naar de principal-interface die in hun implementatie wordt gebruikt, de IFilter interface, en worden daarom ook wel IFilters genoemd. Er zijn twee soorten filters: een filter dat communiceert met afzonderlijke items, zoals bestanden en een die communiceert met containers zoals mappen. Beide bieden gegevens voor de index.
Met behulp van metagegevens die worden geretourneerd door het IUrlAccessor--object van de protocolhandler, identificeert de gegevensverzamelaar het juiste filter voor een bepaalde URL en geeft deze door aan de stream. De gegevensverzamelaar identificeert het juiste filter via een protocolhandler of door de bestandsnaamextensie, het MIME-type of de klasse-id (CLSID). Als de URL verwijst naar een container, verzendt het filter eigenschappen voor de container en inventariseert de items in de container (onderliggende URL's). Als de URL naar een item wijst, retourneert het filter de tekstuele inhoud, indien aanwezig. De eigenschapslezing is complexer dan eigenschapshandlers. Over het algemeen raden we aan dat filters iteminhoud verzenden terwijl eigenschapshandlers itemeigenschappen verzenden. Als uw filter echter moet werken met oudere toepassingen die eigenschapshandlers niet herkennen, kunt u het filter ook implementeren om eigenschappen te verzenden.
Notitie
Filters zijn geen Windows Search-onderdelen; ze zijn onderdelen met betrekking tot de specifieke bestandsindeling of container die ze zijn ontworpen voor toegang. Zie Aanbevolen procedures voor het maken van filterhandlers in Windows Searchvoor meer informatie over filters en het implementeren van een filterhandler voor een aangepaste bestandsindeling of container.
De volgende tabel bevat de resultaten die de gegevensverzamelaar ontvangt van een filter (IFilter) en eigenschapshandler (IPropertyStore) tijdens het indexeringsproces.
| IFilter | IPropertyStore | |
|---|---|---|
| schrijfbewerkingen toestaan | Nee | Ja |
| Inhoud en eigenschappen combineren | Ja | Nee |
| meertalige | Ja | Nee |
| Koppelingen uitsturen | Ja | Nee |
| MIME | Ja | Nee |
| tekstgrenzen | Zin, alinea, hoofdstuk | Geen |
| Client/server | Beide | Klant |
| implementatie | Ingewikkeld | Eenvoudig |
eigenschapshandlers eigenschapshandlers zijn onderdelen die eigenschappen lezen en schrijven voor een bepaalde bestandsindeling. Ze benaderen items en brengen eigenschappen uit voor de verzamelaar op dezelfde manier als filters dat doen voor inhoud. Eigenschapshandlers zijn eenvoudiger te implementeren dan filters. Als een op tekst gebaseerde bestandsindeling heel eenvoudig is of de bestanden naar verwachting zeer klein zijn, kan de eigenschapshandler zowel eigenschappen als inhoud verzenden.
Notitie
Eigenschapshandlers zijn geen Windows Search-onderdelen; ze zijn gerelateerd aan de specifieke bestandsindeling waarvoor ze ontworpen zijn om toegang toe te hebben. Zie Property Handlers ontwikkelen voor Windows Searchvoor meer informatie over eigenschapshandlers en hoe u er een kunt implementeren voor een aangepaste bestandsindeling.
Eigenschappen Windows Search biedt een eigenschappensysteem met een grote bibliotheek met eigenschappen. Elke eigenschap kan worden weergegeven op elk item dat is gedefinieerd door de filter- of eigenschapshandler. Als u een aangepaste bestandsindeling hebt, kunt u de eigenschappen van uw bestandsindeling toewijzen aan deze systeemeigenschappen en kunt u nieuwe aangepaste eigenschappen maken. Wanneer uw filter of eigenschapshandler deze eigenschappen verzendt, werkt de gegevensverzamelaar de index bij zodat gebruikers kunnen zoeken met behulp van uw eigenschappen. Zie Property Systemvoor meer informatie over het maken en registreren van aangepaste eigenschappen voor een bestandsindeling.
SystemIndex De index, SystemIndex, slaat geïndexeerde gegevens op en bestaat uit een eigenschappenarchief en indexen over de eigenschappen en inhoud voor itemeigenschappen, en een omgekeerde index voor tekstuele inhoud en eigenschappen. Nadat de gegevensverzamelaar de index heeft bijgewerkt, kan de index worden opgevraagd door Windows Search en andere toepassingen. Zie Query's uitvoeren op de index via programmacodevoor meer informatie over manieren om een query uit te voeren op de index.
Notitie
Houd er rekening mee dat wanneer u een schema opnieuw registreert, wijzigingen in kenmerken van eerder gedefinieerde eigenschappen mogelijk niet door de indexeerfunctie worden gerespecteerd. De oplossing is om de index opnieuw te bouwen of nieuwe eigenschappen te introduceren die de wijzigingen weerspiegelen in plaats van oude eigenschappen bij te werken (niet aanbevolen). Zie Opmerking voor implementers in Eigenschappensysteemoverzichtvoor meer informatie.
Hoe indexering wordt gepland
Wanneer Windows Search voor het eerst is geïnstalleerd, wordt er een volledige indexering van het verkenningsbereik uitgevoerd, waarbij het wordt onderbroken tijdens perioden met een hoge I/O- en gebruikersactiviteit. Het standaardbereik voor verkenning bestaat uit de standaardbibliotheeklocaties, zoals Documenten, Muziek, Afbeeldingenen Video's. Meldingen worden verwerkt, zelfs voordat de eerste verkenning is voltooid. Af en toe doorzoekt de gegevensverzamelaar de URL's van het volledige verkenningsbereik. Deze volledige crawls zorgen ervoor dat de gegevens in de index actueel zijn. Als een meldingsprovider bijvoorbeeld geen meldingen verzendt of als de Windows Search-service onverwacht wordt beëindigd, heeft de gegevensverzamelaar geen kennis van nieuwe of gewijzigde items en indexeert deze items niet. Er zijn twee soorten bronnen: alleen meldingen en ingeschakelde meldingen. In beide bronnen verkent de gegevensverzamelaar de index in eerste instantie. Na de eerste verkenning voeren de bronnen met alleen meldingen nooit meer een volledige verkenning uit, tenzij er een fout optreedt, zoals het overschakelen van de USN Change Journal. Met meldingen ingeschakelde bronnen voeren een incrementele verkenning uit wanneer de indexeerfunctie wordt gestart en luisteren vervolgens naar meldingen terwijl deze in werking is. NTFS en Microsoft Outlook zijn alleen meldingsopties. Internet Explorer en FAT zijn voorzien van meldingsfunctie.
Notities voor implementeerfuncties
De kwaliteit van de gegevens in de index en de efficiëntie van het indexeringsproces is grotendeels afhankelijk van de implementatie van uw filter- en eigenschapshandler. Omdat het filter elke keer wordt aangeroepen wanneer een URL uw bestandsindeling identificeert, kan het indexeringsproces aanzienlijk vertragen als uw filter inefficiënt is. Als uw eigenschapshandler niet alle bestandseigenschappen correct toe wijst aan systeemeigenschappen of deze eigenschappen niet correct verzendt, zijn de gegevens in de index onjuist en worden latere zoekopdrachten naar deze eigenschappen onjuiste resultaten geretourneerd. Als uw filter- of eigenschapshandler mislukt, kan de indexeerfunctie geen gegevens indexeren.
Toepassingen en processen anders dan Windows Search zijn afhankelijk van protocolhandlers, filters en eigenschapshandlers. Uw implementaties kunnen van invloed zijn op deze toepassingen op manieren die u mogelijk niet verwacht. De Windows Search Development Guide biedt advies over ontwerpkeuzen en het testen van elk van deze onderdelen.
Verwante onderwerpen
indexeren, opvragen en meldingen in Windows Search