Benachrichtigen des Indexes über Änderungen (Windows Search)
Mithilfe der Benachrichtigungs-APIs können Komponenten den Indexer darüber benachrichtigen, dass ein Element geändert, verschoben oder gelöscht wurde, und der Warteschlange von URLs, die eine Indizierung erfordern, Suchbereich zur Warteschlange des Windows Search-Indexers hinzufügen.
Komponenten können den Indexer Windows Search benachrichtigen, dass sich die Daten in ihrem Speicher geändert haben. In der Regel können Sie sich auf die geplanten Durchforstungen des Indexers verlassen. Die Bereitstellung von Benachrichtigungen an den Indexer kann jedoch die Leistung verbessern, indem sichergestellt wird, dass der Indexer nicht den gesamten Speicher für inkrementelle Indizes durchforscht. Dies kann beispielsweise empfohlen werden, wenn Sie davon ausgehen, dass Ihr Datenspeicher sehr groß und/oder besonders ausgelastet ist, z. B. ein E-Mail-Datenspeicher.
- Implementieren von von Indexer verwalteten Benachrichtigungen
- Implementieren von vom Anbieter verwalteten Benachrichtigungen
- Weitere Ressourcen
- Zugehörige Themen
Implementieren von von Indexer verwalteten Benachrichtigungen
Mit vom Indexer verwalteten Benachrichtigungen können Sie den Zugriff auf Ihren Datenspeicher steuern und gleichzeitig die Warteschlange für Benachrichtigungen während des gesamten Indizierungsprozesses verwalten. Ihr Benachrichtigungsanbieter muss Änderungen am Datenspeicher überwachen und eine Benachrichtigungswarteschlange erstellen. Ihr Anbieter sendet regelmäßig einen Batch von Änderungsbenachrichtigungen an den Indexer. Wenn der Indexer Ihre Benachrichtigungen empfängt, gibt er eine Bestätigung zurück, und Sie können die Elemente aus Ihrer Warteschlange entfernen. Wenn Sie nach einem bestimmten Zeitraum keine Bestätigung erhalten, können Sie die Benachrichtigungen erneut senden. Im Falle eines Fehlers erstellt der Indexer seine interne Warteschlange von Elementen neu, um den Speicher zu durchforsten, oder führt eine inkrementelle Durchforstung des Speichers aus.
Um vom Indexer verwaltete Benachrichtigungen zu implementieren, müssen Sie Folgendes implementieren:
- Ein Mechanismus zum Überwachen von Änderungen in Ihrem Datenspeicher.
- Eine Datenstruktur, um Informationen zu diesen Änderungen in die Warteschlange zu stellen (mehrere SEARCH _ ITEM PERSISTENT _ _ CHANGE-Strukturen).
- ISearchPersistentItemsChangedSink-Schnittstelle, um Ihre Benachrichtigungen an den Indexer zu senden und Benachrichtigungsbestätigungen vom Indexer zu erhalten.
Benachrichtigungswarteschlange
Sie müssen jede Änderung in Ihrem Datenspeicher überwachen und in die Warteschlange stellen, um sie als Benachrichtigung an den Indexer zu senden. Wie viele Benachrichtigungen Sie in die Warteschlange stellen und wie oft Sie sie an den Indexer senden, hängt von Ihren Umständen ab. Möglicherweise senden Sie einen Batch von Benachrichtigungen für jede n Anzahl von Änderungen oder nach einem bestimmten Zeitintervall oder einer Kombination der beiden.
Der Indexer erwartet, dass die Benachrichtigungen in einem Array von SEARCH _ ITEM PERSISTENT _ _ CHANGE-Strukturen angezeigt werden, sodass Sie ihre Warteschlange auf ähnliche Weise implementieren können.
ISearchPersistentItemsChangedSink
Um auf diese Schnittstelle zu zugreifen, instanziieren Sie zunächst ein ISearchManager-Objekt, um Zugriff auf ein ISearchCatalogManager-Objekt zu erhalten. Von diesem ISearchCatalogManager-Objekt instanziieren Sie ein ISearchPersistentItemsChangedSink-Objekt und benachrichtigen den Indexer über die Datenänderungen mit einem Aufruf der OnItemsChanged-Methode.
In den Aufruf dieser Methode schließen Sie die Anzahl der gemeldeten Änderungen und ein Array von PERSISTENT CHANGE-Strukturen für SEARCH _ ITEM _ _ ein. Sie erhalten ein Array von HR-Vervollständigungscodes zurück, die angeben, ob jede URL für die Indizierung akzeptiert wurde. Dies ist Ihre Bestätigung vom Indexer.
Implementieren von vom Anbieter verwalteten Benachrichtigungen
Mit vom Anbieter verwalteten Benachrichtigungen können Sie den Zugriff auf Ihren Datenspeicher steuern und den Fortschritt des Indexers überwachen, während er den Suchkatalog Windows aktualisiert. Ihr Anbieter muss Änderungen am Datenspeicher überwachen und eine Benachrichtigungswarteschlange erstellen. Ihr Anbieter sendet regelmäßig einen Batch von Änderungsbenachrichtigungen an den Indexer. Wenn der Indexer Ihre Benachrichtigungen empfängt, gibt er eine Bestätigung zurück. Wenn Sie nach einem bestimmten Zeitraum keine Bestätigung erhalten, können Sie die Benachrichtigungen erneut senden. Während der Indexer den Datenspeicher durchforscht und den Windows Search-Katalog aktualisiert, benachrichtigt er Ihren Anbieter über jedes Katalogupdate, und Sie können die Elemente aus der Warteschlange entfernen. Ihr Anbieter verwaltet während dieses Prozesses seine Benachrichtigungswarteschlange, sodass Sie im Falle eines Fehlers Benachrichtigungen erneut an den Indexer senden können.
Um vom Anbieter verwaltete Benachrichtigungen zu implementieren, müssen Sie Folgendes implementieren:
- Ein Mechanismus zum Überwachen von Änderungen in Ihrem Datenspeicher.
- Eine Datenstruktur, um Informationen zu diesen Änderungen in die Warteschlange zu stellen (mehrere SEARCH _ ITEM _ CHANGE-Strukturen).
- ISearchItemsChangedSink-Schnittstelle, um Ihre Benachrichtigungen an den Indexer zu senden und Benachrichtigungsbestätigungen vom Indexer zu erhalten.
- ISearchNotifyInlineSite-Schnittstelle, um Updates zum Status der Indizierung zu erhalten.
Benachrichtigungswarteschlange
Sie müssen jede Änderung in Ihrem Datenspeicher überwachen und in die Warteschlange stellen, um sie als Benachrichtigung an den Indexer zu senden. Wie viele Benachrichtigungen Sie in die Warteschlange stellen und wie oft Sie sie an den Indexer senden, hängt von Ihren Umständen ab. Möglicherweise senden Sie einen Batch von Benachrichtigungen für jede n Anzahl von Änderungen oder nach einem bestimmten Zeitintervall oder einer Kombination der beiden.
Der Indexer erwartet, dass die Benachrichtigungen in einem Array von SEARCH _ ITEM _ CHANGE-Strukturen enthalten sind, sodass Sie änderungsinformationen auf ähnliche Weise speichern können. Sie müssen jedoch auch in der Lage sein, die Benachrichtigungen, die Sie senden, mit den Bestätigungen und Updates zu übereinstimmen, die vom Indexer zurückgegeben werden. Möglicherweise möchten Sie auch erkennen können, wie lange das Empfangen von Bestätigungen dauert, damit Sie entscheiden können, ob/wann Benachrichtigungen erneut gesendet werden sollen.
ISearchItemsChangedSink
Um auf diese Schnittstelle zu zugreifen, instanziieren Sie zunächst ein ISearchManager-Objekt, um Zugriff auf ein ISearchCatalogManager-Objekt zu erhalten. Aus diesem ISearchCatalogManager-Objekt instanziieren Sie ein ISearchItemsChangedSink-Objekt und benachrichtigen den Indexer über die Datenänderungen mit einem Aufruf der OnItemsChanged-Methode.
In den Aufruf dieser Methode schließen Sie die Anzahl der gemeldeten Änderungen und ein Array von SEARCH _ ITEM _ CHANGE-Strukturen ein. Sie erhalten ein Array von Vom Indexer zugewiesenen DocIds zurück, die jede Änderung darstellen, sowie ein Array von HR-Vervollständigungscodes, die angeben, ob jede URL für die Indizierung akzeptiert wurde. Dies ist Ihre Bestätigung vom Indexer, dass er Ihre Benachrichtigungen empfangen hat und die Indizierung der Elemente vorbereitet.
Ab diesem Zeitpunkt sendet der Indexer Updates mithilfe der ISearchNotifyInlineSite-Schnittstelle.
ISearchNotifyInlineSite
Um Updates zum Status Ihrer Elemente und des Katalogs zu erhalten, müssen Sie Ihre ISearchNotifyInlineSite-Schnittstelle beim Indexer registrieren, damit sie Rückrufe senden kann. Jedes Update, das mithilfe von ISearchNotifyInlineSite::OnItemIndexedStatusChange gesendet wird, identifiziert die Elemente anhand von DocId, des Status jedes Elements (SEARCH ITEM _ _ INDEXING _ STATUS) und der Indizierungsphase (SEARCH _ INDEXING _ PHASE), in der sich die Elemente befinden.
Sie erhalten nicht nur Updates zum Status der einzelnen Elemente, wie zuvor beschrieben, sondern auch wichtige Informationen zum Status des Katalogs selbst. Die Windows Suchdienst kann vom Endbenutzer, einer Drittanbieteranwendung oder einem anderen Fehler unterbrochen oder neu gestartet werden. In diesem Fall benötigen Sie eine Möglichkeit, um zu bestimmen, welche Benachrichtigungen an den Indexer zurückgeusht werden sollen.
Die ISearchNotifyInlineSite::OnCatalogStatusChange-Methode, die vom Windows Suchdienst aufgerufen wird, informiert Clients mithilfe der in der folgenden Tabelle beschriebenen Parameter über den Status des Katalogs.
| Parameter | Beschreibung |
|---|---|
| guidCatalogResetSignature | Eine GUID, die die Katalogzurücksetzung darstellt. Wenn sich diese GUID ändert, müssen alle Benachrichtigungen erneut gesendet werden. |
| guidCheckPointSignature | Eine GUID, die den letzten wiederhergestellten Prüfpunkt darstellt. Wenn sich diese GUID ändert, müssen alle Benachrichtigungen, die seit dem letzten gespeicherten Prüfpunkt gesammelt wurden, erneut gesendet werden. |
| dwLastCheckPointNumber | Eine Zahl, die den letzten gespeicherten Prüfpunkt angibt. |
Wenn ein Katalogprüfpunkt auftritt, aktualisiert der Suchdienst dwLastCheckPointNumber, und alle vor diesem Prüfpunkt gesendeten Benachrichtigungen sind im Falle eines Dienstfehlers sicher und wiederherstellbar. Benachrichtigungsanbieter müssen im Falle einer Katalogwiederherstellung oder -zurücksetzung nur die Benachrichtigungen nachverfolgen, die zwischen Prüfpunkten und Demush gesendet werden.
Wenn eine Katalogwiederherstellung erfolgt, führt der Suchdienst ein Rollback des Katalogs auf den zuletzt gespeicherten Prüfpunkt aus und aktualisiert guidCheckPointSignature. In diesem Fall müssen Benachrichtigungsanbieter alle Benachrichtigungen, die seit dem letzten gespeicherten Prüfpunkt gesammelt wurden, wie von dwLastCheckPointNumber identifiziert, erneut über die Benachrichtigungen senden.
Wenn eine Katalogzurücksetzung erfolgen soll, setzt der Suchdienst den gesamten Katalog zurück und aktualisiert guidCatalogResetSignature. Der Benachrichtigungsanbieter muss den gesamten Durchforstungsbereich erneut übertragen.
Weitere Ressourcen
- Eine Übersicht über den Indizierungsprozess finden Sie unter Der Indizierungsprozess.
- Eine Übersicht über den Katalog-Manager und den Katalogsuche-Manager (Catalog Search Manager, CSM) finden Sie unter Verwenden des Katalog-Managers und Verwenden der Durchforstungsbereich-Manager.
- Informationen zum Erstellen eines Shell-Datenspeichers finden Sie unter Implementing the Basic Folder Object Interfaces.
Zugehörige Themen
-
Konzeptionellen