Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe der Benachrichtigungs-APIs können Komponenten den Indexer benachrichtigen, dass ein Element geändert, verschoben oder gelöscht wurde, und Suchbereiche zur Warteschlange des Windows Search-Indexers von URLs hinzufügen, die eine Indizierung erfordern.
Komponenten können den Windows Search-Indexer benachrichtigen, dass sich Die Daten in ihrem Speicher geändert haben. In der Regel können Sie sich auf die geplanten Indizierungen des Indexers verlassen. Das Bereitstellen von Benachrichtigungen an den Indexer kann jedoch die Leistung verbessern, indem sichergestellt wird, dass der Indexer den gesamten Speicher nicht für inkrementelle Indizes durchforstet. Dies kann beispielsweise empfohlen werden, wenn Sie erwarten, dass Ihr Datenspeicher außergewöhnlich groß und/oder außergewöhnlich ausgelastet ist, z. B. ein E-Mail-Datenspeicher.
- Implementieren von von Indexer verwalteten Benachrichtigungen
- Implementieren von vom Anbieter verwalteten Benachrichtigungen
- Zusätzliche Ressourcen
- Verwandte Themen
Implementieren von vom Indexer verwalteten Benachrichtigungen
Durch vom Indexer verwaltete Benachrichtigungen können Sie den Zugriff auf Ihren Datenspeicher steuern und werden gleichzeitig von der Aufgabe entlastet, die Benachrichtigungswarteschlange während des gesamten Indizierungsprozesses zu pflegen. Ihr Benachrichtigungsanbieter muss Änderungen am Datenspeicher überwachen und eine Benachrichtigungswarteschlange erstellen. In regelmäßigen Abständen sendet Ihr Anbieter eine Reihe von Änderungsbenachrichtigungen an den Indexer. Wenn der Indexer Ihre Benachrichtigungen empfängt, wird eine Bestätigung zurückgegeben, 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 baut der Indexer seine interne Warteschlange von Elementen neu auf, um sie zu durchsuchen oder führt eine inkrementelle Durchsuchung des Speichers durch.
Um indizierungsverwaltete Benachrichtigungen zu implementieren, müssen Sie Folgendes implementieren:
- Ein Mechanismus zum Überwachen von Änderungen in Ihrem Datenspeicher.
- Eine Datenstruktur zum Einreihen von Informationen (mehrere SEARCH_ITEM_PERSISTENT_CHANGE Strukturen) über diese Änderungen.
- ISearchPersistentItemsChangedSink-Schnittstelle , um Ihre Benachrichtigungen an den Indexer zu senden und Benachrichtigungsbestätigungen vom Indexer abzurufen.
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 häufig Sie sie an den Indexer senden, hängt von Ihrem Umstand ab. Vielleicht senden Sie eine Reihe von Benachrichtigungen für jede n Anzahl von Änderungen oder nach einem bestimmten Zeitintervall oder eine Kombination der beiden.
Der Indexer erwartet, dass die Benachrichtigungen in einem Array von SEARCH_ITEM_PERSISTENT_CHANGE Strukturen enthalten sind, daher können Sie ihre Warteschlange auf ähnliche Weise implementieren.
ISearchPersistentItemsChangedSink
Um auf diese Schnittstelle zuzugreifen, 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 der Datenänderungen mit einem Aufruf der OnItemsChanged-Methode .
Im Aufruf dieser Methode schließen Sie die Anzahl der gemeldeten Änderungen und ein Array von SEARCH_ITEM_PERSISTENT_CHANGE Strukturen ein. Sie erhalten ein Array von HR-Abschlusscodes zurück, das angibt, 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 der Windows Search-Katalog aktualisiert wird. Ihr Anbieter muss Änderungen am Datenspeicher überwachen und eine Benachrichtigungswarteschlange erstellen. In regelmäßigen Abständen sendet Ihr Anbieter eine Reihe von Änderungsbenachrichtigungen an den Indexer. Wenn der Indexer Ihre Benachrichtigungen empfängt, wird eine Bestätigung zurückgegeben. Wenn Sie nach einem bestimmten Zeitraum keine Bestätigung erhalten, können Sie die Benachrichtigungen erneut senden. Wenn der Indexer den Datenspeicher durchforstet und den Windows Search-Katalog aktualisiert, benachrichtigt er Ihren Anbieter jedes Katalogupdates, und Sie können die Elemente aus der Warteschlange entfernen. Ihr Anbieter verwaltet seine Benachrichtigungswarteschlange während dieses Prozesses, sodass Sie im Falle eines Fehlers Benachrichtigungen an den Indexer erneut 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 in eine Warteschlange zu stellen (mehrere der SEARCH_ITEM_CHANGE-Strukturen) zu diesen Änderungen.
- ISearchItemsChangedSink-Schnittstelle , um Ihre Benachrichtigungen an den Indexer zu senden und Benachrichtigungsbestätigungen vom Indexer abzurufen.
- ISearchNotifyInlineSite-Schnittstelle , um Aktualisierungen 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 häufig Sie sie an den Indexer senden, hängt von Ihrem Umstand ab. Vielleicht senden Sie eine Reihe von Benachrichtigungen für jede n Anzahl von Änderungen oder nach einem bestimmten Zeitintervall oder eine 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 möchten. Sie müssen jedoch auch in der Lage sein, die Benachrichtigungen abzugleichen, die Sie mit den Bestätigungen und Aktualisierungen senden, die vom Indexer zurückgegeben werden. Möglicherweise möchten Sie auch erkennen, wie lange es dauert, um Bestätigungen zu erhalten, damit Sie entscheiden können, ob/wann Benachrichtigungen erneut gesendet werden sollen.
ISearchItemsChangedSink
Um auf diese Schnittstelle zuzugreifen, instanziieren Sie zunächst ein ISearchManager-Objekt , um Zugriff auf ein ISearchCatalogManager -Objekt zu erhalten. Von diesem ISearchCatalogManager-Objekt instanziieren Sie ein ISearchItemsChangedSink-Objekt und benachrichtigen den Indexer der Datenänderungen mit einem Aufruf der OnItemsChanged-Methode .
Im 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 indexer zugewiesenen DocIds, 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 sie Ihre Benachrichtigungen erhalten hat und die Indizierung der Elemente vorbereitet.
Ab diesem Zeitpunkt sendet der Indexer Updates mithilfe der ISearchNotifyInlineSite-Schnittstelle .
ISearchNotifyInlineSite
Um Aktualisierungen über den Status Ihrer Elemente und des Katalogs zu erhalten, müssen Sie Ihre ISearchNotifyInlineSite-Schnittstelle beim Indexer registrieren, damit Sie Rückrufe senden können. Jede Aktualisierung, die mithilfe von ISearchNotifyInlineSite::OnItemIndexedStatusChange gesendet wird, identifiziert die Elemente nach DocId, den Status jedes Elements (SEARCH_ITEM_INDEXING_STATUS) und die Indizierungsphase (SEARCH_INDEXING_PHASE), in der sich die Elemente befinden.
Sie erhalten nicht nur Aktualisierungen über den Status jedes Elements, wie zuvor beschrieben, auch wichtige Informationen zum Status des Katalogs selbst. Der 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 erneut gesendet werden sollen.
Die ISearchNotifyInlineSite::OnCatalogStatusChange-Methode , die vom Windows Search-Dienst aufgerufen wird, informiert Clients über den Status des Katalogs mithilfe der in der folgenden Tabelle beschriebenen Parameter.
| Parameter | Description |
|---|---|
| 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 die dwLastCheckPointNumber, und alle Benachrichtigungen, die vor diesem Prüfpunkt gesendet werden, sind sicher und wiederherstellbar im Falle eines Dienstausfalls. Benachrichtigungsanbieter müssen nur die Benachrichtigungen nachverfolgen, die zwischen Prüfpunkten gesendet wurden und erneut gesendet werden müssen, falls ein Katalog wiederhergestellt oder zurückgesetzt wird.
Wenn ein Katalog wiederhergestellt wird, setzt der Suchdienst den Katalog auf den letzten gespeicherten Prüfpunkt zurück und aktualisiert die guidCheckPointSignature. In dieser Situation müssen Benachrichtigungsdienstanbieter alle Benachrichtigungen erneut senden, die seit dem zuletzt gespeicherten Prüfpunkt gesammelt wurden, der durch dwLastCheckPointNumber identifiziert wurde.
Falls ein Katalogreset erforderlich ist, setzt der Suchdienst den gesamten Katalog zurück und aktualisiert die guidCatalogResetSignature. Der Benachrichtigungsanbieter muss den gesamten Crawl-Bereich erneut wiederholen.
Weitere Ressourcen
- Eine Übersicht über den Indizierungsprozess finden Sie unter "Indizierungsprozess".
- Übersichten über den Katalog-Manager und den Katalogsuchmanager (CSM) finden Sie unter Verwenden des Katalog-Managers und Using the Crawl Scope Manager.
- Informationen zum Erstellen eines Shell-Datenspeichers finden Sie unter Implementieren der grundlegenden Ordnerobjektschnittstellen.
Zugehörige Themen
-
Konzeptionelle