Sdílet prostřednictvím


Oznámení indexu změn (Windows Search)

Pomocí komponent rozhraní API pro oznámení může indexer upozornit, že se položka změnila, přesunula nebo odstranila, a může přidat obory vyhledávání do fronty indexeru služby Windows Search adres URL, které vyžadují indexování.

Komponenty mohou indexeru Windows Search upozornit, že se změnila data v jejich úložišti. Obvykle se můžete spolehnout na naplánované prohledávání indexeru. Poskytování oznámení indexeru může zvýšit výkon tím, že zabrání indexeru procházet celé úložiště při vytváření přírůstkových indexů. Může se to například doporučit, pokud očekáváte, že vaše úložiště dat bude mimořádně velké nebo mimořádně zaneprázdněné, například v e-mailovém úložišti dat.

Implementace oznámení spravovaných indexerem

Oznámení spravovaná indexerem umožňují řídit přístup k úložišti dat a zároveň vás zbavují nutnosti udržovat frontu oznámení po celou dobu procesu indexování. Váš poskytovatel oznámení musí monitorovat změny úložiště dat a vytvořit frontu oznámení. Poskytovatel pravidelně odesílá do indexeru dávku oznámení o změnách. Když indexer obdrží oznámení, vrátí potvrzení a položky můžete z fronty odebrat. Pokud po určité době neobdržíte potvrzení, můžete oznámení znovu odeslat. V případě selhání indexovací nástroj znovu sestaví interní frontu položek k procházení nebo provede přírůstkové procházení úložiště.

Pokud chcete implementovat oznámení spravovaná indexerem, musíte implementovat následující:

Fronta oznámení

Potřebujete monitorovat všechny změny ve vašem úložišti dat a zařadit je do fronty pro odeslání indexeru jako oznámení. Kolik oznámení zařadíte do fronty a jak často je odesíláte do indexátoru, závisí na vaší situaci. Možná budete posílat dávku oznámení po každém n počtu změn, po určitém t časovém intervalu nebo jako kombinaci obou možností.

Indexer očekává, že oznámení přicházejí do pole SEARCH_ITEM_PERSISTENT_CHANGE struktur, takže se můžete rozhodnout implementovat frontu podobně.

ISearchPersistentItemsChangedSink

Pro přístup k tomuto rozhraní nejprve vytvoříte instanci objektu ISearchManager, abyste získali přístup k objektu ISearchCatalogManager objektu. Z tohoto ISearchCatalogManager objektu vytvoříte instanci ISearchPersistentItemsChangedSink a upozorníte indexer na změny dat voláním metody OnItemsChanged.

Při volání této metody zahrnete počet oznamovaných změn a pole struktur SEARCH_ITEM_PERSISTENT_CHANGE. Získáte zpět pole kódů pro dokončování lidských zdrojů označující, jestli byla každá adresa URL přijata k indexování. Toto je vaše potvrzení z indexeru.

Implementace oznámení spravovaných poskytovatelem

Oznámení spravovaná poskytovatelem umožňují řídit přístup k úložišti dat a sledovat průběh indexeru při aktualizaci katalogu Windows Search. Váš poskytovatel musí monitorovat změny úložiště dat a vytvořit frontu oznámení. Poskytovatel pravidelně odesílá do indexeru dávku oznámení o změnách. Když indexer obdrží vaše oznámení, vrátí potvrzení. Pokud po určité době neobdržíte potvrzení, můžete oznámení znovu odeslat. Když indexer prochází úložiště dat a aktualizuje katalog Služby Windows Search, upozorní vašeho poskytovatele na každou aktualizaci katalogu a můžete odebrat položky z fronty. Váš poskytovatel během tohoto procesu udržuje svou frontu oznámení, takže v případě selhání můžete znovu odeslat oznámení indexeru.

Pokud chcete implementovat oznámení spravovaná poskytovatelem, musíte implementovat následující:

  • Mechanismus monitorování změn v úložišti dat.
  • Datová struktura pro vytvoření fronty informací (více SEARCH_ITEM_CHANGE struktur) o těchto změnách.
  • ISearchItemsChangedSink rozhraní pro odesílání oznámení indexeru a získání potvrzení oznámení z indexeru.
  • ISearchNotifyInlineSite rozhraní pro příjem aktualizací o stavu indexování.

Fronta oznámení

Potřebujete monitorovat a zařadit každou změnu ve vašem úložišti dat do fronty, aby byla odeslána indexeru jako oznámení. Kolik oznámení zařadíte do fronty a jak často je odesíláte do indexeru, závisí na vaší situaci. Možná pošlete dávku oznámení pro každý n počet změn nebo po nějakém t časovém intervalu, nebo kombinací těchto dvou.

Indexer očekává, že oznámení přicházejí ve formě pole struktur SEARCH_ITEM_CHANGE, takže se můžete rozhodnout ukládat informace o změnách podobným způsobem. Abyste však mohli přiřadit oznámení, která odesíláte, k potvrzením a aktualizacím vráceným indexerem. Můžete také zjistit, jak dlouho trvá získání potvrzení, abyste se mohli rozhodnout, jestli a kdy se mají oznámení znovu odeslat.

ISearchItemsChangedSink

Pro přístup k tomuto rozhraní nejprve vytvoříte instanci objektu ISearchManager, abyste získali přístup k objektu ISearchCatalogManager objektu. Z objektu ISearchCatalogManager vytvoříte instanci ISearchItemsChangedSink a upozorníte indexer na změny dat voláním metody OnItemsChanged.

Ve volání této metody zahrnete počet ohlášených změn a pole struktur SEARCH_ITEM_CHANGE. Vrátíte pole identifikátorů DocId přiřazených indexerem, které představují každou změnu, a také pole kódů dokončení personálního oddělení označující, jestli byla každá adresa URL přijata k indexování. Toto je vaše potvrzení z indexeru, že obdržel vaše oznámení a připravuje indexování položek.

Od tohoto okamžiku indexer odesílá aktualizace pomocí rozhraní ISearchNotifyInlineSite.

ISearchNotifyInlineSite

Chcete-li získat aktualizace o stavu vašich položek i katalogu, musíte zaregistrovat vaše ISearchNotifyInlineSite rozhraní u indexeru, aby vám mohl odesílat zpětná volání. Každá aktualizace odeslaná pomocí ISearchNotifyInlineSite::OnItemIndexedStatusChange identifikuje položky podle DocId, stav každé položky (SEARCH_ITEM_INDEXING_STATUS) a fázi indexování (SEARCH_INDEXING_PHASE), ve které jsou položky.

Nejen že dostáváte aktualizace o stavu každé položky, jak je popsáno výše, získáte také důležité informace o stavu samotného katalogu. Službu Windows Search může koncový uživatel, aplikaci třetí strany nebo jiné selhání přerušit nebo restartovat. V takovém případě potřebujete způsob, jak určit, jaká oznámení se mají znovu odeslat indexeru.

Metoda ISearchNotifyInlineSite::OnCatalogStatusChange, volaná službou Windows Search, informuje klienty o stavu katalogu pomocí parametrů popsaných v následující tabulce.

Parametr Popis
GuidCatalogResetSignature Identifikátor GUID představující resetování katalogu. Pokud se tento identifikátor GUID změní, musí se všechna oznámení znovu odeslat.
GuidCheckPointSignature Identifikátor GUID představující poslední obnovený kontrolní bod. Pokud se tento identifikátor GUID změní, musí se všechna oznámení kumulovaná od posledního uloženého kontrolního bodu znovu odeslat.
dwLastCheckPointNumber Číslo označující poslední uložený kontrolní bod.

 

 

Když dojde k kontrolnímu bodu katalogu, vyhledávací služba aktualizuje dwLastCheckPointNumbera všechna oznámení odeslaná před tímto kontrolním bodem jsou v případě selhání služby bezpečná a obnovitelná. Poskytovatelé oznámení musí sledovat pouze ta oznámení, která byla odeslána mezi kontrolními body, a v případě obnovení nebo resetování katalogu je znovu odeslat.

Pokud dojde k obnovení katalogu, vyhledávací služba vrátí katalog zpět do posledního uloženého kontrolního bodu a aktualizuje guidCheckPointSignature. V této situaci musí poskytovatelé oznámení opět odeslat všechna oznámení shromážděná od posledního uloženého kontrolního bodu identifikovaného dwLastCheckPointNumber.

Pokud by mělo dojít k resetování katalogu, vyhledávací služba obnoví celý katalog a aktualizuje guidCatalogResetSignature. Poskytovatel oznámení musí znovu spustit celý rozsah procházení.

Další zdroje informací

koncepční

Vývoj zpracovatelů protokolu

Porozumění zpracovatelům protokolu

přidání ikon a kontextových nabídek

Ukázka kódu : Rozšíření prostředí pro obslužné rutiny protokolu

instalace a registrace obslužných rutin protokolu

Vytvoření vyhledávacího konektoru pro modul protokolu

Programové obslužné rutiny pro ladění protokolů