De index van wijzigingen melden (Windows Search)

Met behulp van de onderdelen van de meldings-API's kan de indexeerfunctie waarschuwen dat een item is gewijzigd, verplaatst of verwijderd en kan zoekbereiken worden toegevoegd aan de wachtrij met URL's van de Windows Search-indexeerfunctie waarvoor indexering is vereist.

Onderdelen kunnen de Windows Search-indexeerder informeren dat gegevens in hun opslag zijn gewijzigd. Normaal gesproken kunt u vertrouwen op de geplande verkenningen van de indexeerfunctie. Het verstrekken van meldingen aan de indexeerfunctie kan echter de prestaties verbeteren door ervoor te zorgen dat de indexeerfunctie het hele archief niet verkent op incrementele indexen. Dit kan bijvoorbeeld worden aanbevolen als u verwacht dat uw gegevensarchief uitzonderlijk groot en/of uitzonderlijk druk is, zoals een e-mailgegevensarchief.

Door indexeerfunctie beheerde meldingen implementeren

Door de indexeerder beheerde meldingen stellen u in staat om de toegang tot uw gegevensopslag te beheren, terwijl u ontlast wordt van het onderhouden van de meldingenwachtrij gedurende het hele indexeringsproces. Uw meldingenprovider moet wijzigingen in het gegevensarchief controleren en een meldingenwachtrij maken. Uw provider verzendt periodiek een batch wijzigingsmeldingen naar de indexeerfunctie. Wanneer de indexeerfunctie uw meldingen ontvangt, wordt er een bevestiging geretourneerd en kunt u de items uit de wachtrij verwijderen. Als u na een bepaalde periode geen bevestiging ontvangt, kunt u de meldingen opnieuw verzenden. In het geval van een storing herbouwt de indexer zijn interne wachtrij met items om te crawlen, of voert een incrementele crawling van de opslag uit.

Als u door een indexeerfunctie beheerde meldingen wilt implementeren, moet u het volgende implementeren:

  • Een mechanisme voor het bewaken van wijzigingen in uw gegevensarchief.
  • Een gegevensstructuur voor het in de wachtrij plaatsen van informatie (meerdere SEARCH_ITEM_PERSISTENT_CHANGE structuren) over deze wijzigingen.
  • interface ISearchPersistentItemsChangedSink interface om uw meldingen te verzenden naar de indexeerfunctie en om meldingsbevestigingen van de indexeerfunctie op te halen.

Meldingenwachtrij

U moet elke wijziging in uw gegevensarchief bewaken en in de wachtrij plaatsen om als melding naar de indexeerfunctie te verzenden. Hoeveel meldingen u in de wachtrij zet en hoe vaak u ze naar de indexeerfunctie verzendt, is afhankelijk van uw situatie. Misschien verzendt u een batch meldingen voor elke n aantal wijzigingen of na een aantal t tijdsinterval of een combinatie van de twee.

De indexeerfunctie verwacht dat de meldingen een matrix van SEARCH_ITEM_PERSISTENT_CHANGE structuren bevatten, zodat u ervoor kunt kiezen om uw wachtrij op dezelfde manier te implementeren.

ISearchPersistentItemsChangedSink

Voor toegang tot deze interface maakt u eerst een instantie van een ISearchManager--object om toegang te krijgen tot een ISearchCatalogManager-object. Vanuit dat ISearchCatalogManager-object instantieert u een ISearchPersistentItemsChangedSink-object en stelt u de indexeerder op de hoogte van de gegevenswijzigingen met een aanroep naar de OnItemsChanged-methode.

In de aanroep van deze methode neemt u het aantal wijzigingen op dat wordt gerapporteerd en een matrix van SEARCH_ITEM_PERSISTENT_CHANGE structuren. U krijgt een matrix met HR-voltooiingscodes die aangeven of elke URL is geaccepteerd voor indexering. Dit is uw bevestiging van de indexeerfunctie.

Door de provider beheerde meldingen implementeren

Met door de provider beheerde meldingen kunt u de toegang tot uw gegevensarchief beheren en de voortgang van de indexeerfunctie controleren terwijl de Windows Search-catalogus wordt bijgewerkt. Uw provider moet wijzigingen in het gegevensarchief bewaken en een meldingenwachtrij maken. Uw provider verzendt periodiek een batch wijzigingsmeldingen naar de indexeerfunctie. Wanneer de indexeerfunctie uw meldingen ontvangt, wordt er een bevestiging geretourneerd. Als u na een bepaalde periode geen bevestiging ontvangt, kunt u de meldingen opnieuw verzenden. Wanneer de indexeerfunctie het gegevensarchief verkent en de Windows Search-catalogus bijwerkt, wordt uw provider van elke catalogusupdate op de hoogte stelt en kunt u de items uit uw wachtrij verwijderen. Uw provider onderhoudt de meldingswachtrij gedurende dit proces, zodat u in geval van storing meldingen opnieuw kunt verzenden naar de indexeerfunctie.

Als u door de provider beheerde meldingen wilt implementeren, moet u het volgende implementeren:

  • Een mechanisme voor het bewaken van wijzigingen in uw gegevensarchief.
  • Een gegevensstructuur voor het in de wachtrij plaatsen van informatie (meerdere SEARCH_ITEM_CHANGE structuren) over deze wijzigingen.
  • ISearchItemsChangedSink interface om uw meldingen te verzenden naar de indexeerfunctie en om meldingsbevestigingen van de indexeerfunctie op te halen.
  • interface ISearchNotifyInlineSite om updates te ontvangen over de status van indexering.

Meldingenwachtrij

U moet elke wijziging in uw gegevensarchief bewaken en in de wachtrij plaatsen om als melding naar de indexeerfunctie te verzenden. Hoeveel meldingen u in de wachtrij zet en hoe vaak u ze naar de indexeerfunctie verzendt, is afhankelijk van uw situatie. Misschien verzendt u een batch meldingen voor elke n aantal wijzigingen of na een aantal t tijdsinterval of een combinatie van de twee.

De indexeerfunctie verwacht dat de meldingen in een matrix van SEARCH_ITEM_CHANGE structuren worden geleverd, dus u kunt ervoor kiezen om wijzigingsinformatie op dezelfde manier op te slaan. U moet echter ook in staat zijn de meldingen die u verzendt te koppelen aan de bevestigingen en updates die door de indexeerder worden teruggestuurd. Mogelijk wilt u ook detecteren hoe lang het duurt om bevestigingen te krijgen, zodat u kunt bepalen of/wanneer u meldingen opnieuw wilt verzenden.

ISearchItemsChangedSink

Voor toegang tot deze interface maakt u eerst een instantie van een ISearchManager--object om toegang te krijgen tot een ISearchCatalogManager-object. Vanuit dat ISearchCatalogManager object, instantieert u een ISearchItemsChangedSink object en informeert u de indexeerfunctie van de gegevenswijzigingen met een aanroep naar de methode OnItemsChanged.

In de aanroep van deze methode neemt u het aantal wijzigingen op dat wordt gerapporteerd en een matrix van SEARCH_ITEM_CHANGE structuren. U krijgt een matrix met door de indexeerfunctie toegewezen DocIds die elke wijziging vertegenwoordigen, evenals een matrix met HR-voltooiingscodes die aangeven of elke URL is geaccepteerd voor indexering. Dit is uw bevestiging van de indexeerfunctie dat deze uw meldingen heeft ontvangen en bereidt zich voor om de items te indexeren.

Vanaf dat moment verzendt de indexeerfunctie updates met behulp van de ISearchNotifyInlineSite interface.

ISearchNotifyInlineSite

Als u updates wilt ontvangen over de status van zowel uw items als de catalogus, moet u uw ISearchNotifyInlineSite interface registreren met de indexeerfunctie, zodat u callbacks kunt verzenden. Elke update die wordt verzonden met ISearchNotifyInlineSite::OnItemIndexedStatusChange identificeert de items op DocId, de status van elk item (SEARCH_ITEM_INDEXING_STATUS) en de indexeringsfase (SEARCH_INDEXING_PHASE) waarin de items zich bevinden.

U ontvangt niet alleen updates over de status van elk item, zoals eerder beschreven, maar ook belangrijke informatie over de status van de catalogus zelf. De Windows Search-service kan worden onderbroken of opnieuw worden gestart door de eindgebruiker, een toepassing van derden of een andere fout. Wanneer dit gebeurt, hebt u een manier nodig om te bepalen welke meldingen opnieuw naar de indexeerder moeten worden gestuurd.

De methode ISearchNotifyInlineSite::OnCatalogStatusChange, aangeroepen door de Windows Search-service, informeert clients over de status van de catalogus met behulp van de parameters die in de volgende tabel worden beschreven.

Parameter Beschrijving
guidCatalogResetSignature Een GUID die het opnieuw instellen van de catalogus vertegenwoordigt. Als deze GUID wordt gewijzigd, moeten alle meldingen opnieuw worden verzonden.
guidCheckPointSignature Een GUID die het laatste controlepunt vertegenwoordigt dat is hersteld. Als deze GUID wordt gewijzigd, moeten alle meldingen die zijn verzameld sinds het laatst opgeslagen controlepunt opnieuw worden verzonden.
dwLastCheckPointNumber Een getal dat het laatste controlepunt aangeeft dat is opgeslagen.

 

 

Wanneer een cataloguscontrolepunt plaatsvindt, werkt de zoekservice de dwLastCheckPointNumberbij en zijn alle meldingen die vóór dat controlepunt worden verzonden, veilig en herstelbaar in het geval van een servicefout. Meldingenproviders moeten alleen de meldingen bijhouden die worden verzonden tussen controlepunten en opnieuw verzenden in het geval van een catalogusherstel of -reset.

Als er een catalogusherstel plaatsvindt, wordt de catalogus teruggedraaid naar het laatst opgeslagen controlepunt en wordt de guidCheckPointSignaturebijgewerkt. In deze situatie moeten meldingenproviders alle meldingen die zijn verzameld en opgeslagen, opnieuw verzenden sinds het meest recente opgeslagen controlepunt zoals geïdentificeerd door de dwLastCheckPointNumber.

Als een catalogus opnieuw moet worden ingesteld, wordt de hele catalogus opnieuw ingesteld en wordt de guidCatalogResetSignaturebijgewerkt. De notificatieprovider moet het volledige zoekbereik opnieuw verzenden.

Aanvullende bronnen

conceptuele

Protocolhandlers ontwikkelen

Protocolhandlers Begrijpen

pictogrammen en contextmenu's toevoegen

codevoorbeeld: Shell-extensies voor protocolhandlers

Protocol-handlers installeren en registreren

Een zoekconnector maken voor een protocolhandler

Foutopsporingsprotocol-handlers