xpmgr/BuildTools/Include/searchcatalog.idl

364 lines
9.5 KiB
Plaintext

//+----------------------------------------------------------------------------
//
// Copyright (c) 2005 Microsoft Corporation.
//
// File: SearchCatalog.idl
//
// Purpose: Search Catalog Interface Description
//
// History: 07/06/2005 louisg Modified
//
//-----------------------------------------------------------------------------
//
// Forward references
//
interface ISearchQueryHelper;
////////////////////////////////////////////////////////////////////////////////
//
// ISearchCatalogManager - Manage catalogs
//
typedef enum _CatalogStatus {
//
// No indexing is needed
//
CATALOG_STATUS_IDLE = 0,
//
// Indexer is paused, queries are still OK
//
CATALOG_STATUS_PAUSED = 1,
//
// Indexer is recovering--no indexing or querying
//
CATALOG_STATUS_RECOVERING = 2,
//
// Indexer is doing a full crawl and indexing everything
//
CATALOG_STATUS_FULL_CRAWL = 3,
//
// Indexer is checking to see if anything needs to be indexed because it has changed
//
CATALOG_STATUS_INCREMENTAL_CRAWL = 4,
//
// Indexer is processing notification queue which is done before resuming any crawl.
//
CATALOG_STATUS_PROCESSING_NOTIFICATIONS = 5,
//
// Indexer is shutting down and is not indexing and can't be queried.
//
CATALOG_STATUS_SHUTTING_DOWN = 6
} CatalogStatus;
typedef enum _CatalogPausedReason {
//
// Not paused
//
CATALOG_PAUSED_REASON_NONE = 0,
//
// Paused due to high I/O
//
CATALOG_PAUSED_REASON_HIGH_IO = 1,
//
// Paused due to high CPU usage
//
CATALOG_PAUSED_REASON_HIGH_CPU = 2,
//
// Paused due to high NTF rate
//
CATALOG_PAUSED_REASON_HIGH_NTF_RATE = 3,
//
// Paused due to low battery
//
CATALOG_PAUSED_REASON_LOW_BATTERY = 4,
//
// Paused due to low memory
//
CATALOG_PAUSED_REASON_LOW_MEMORY = 5,
//
// Paused due to low disk space
//
CATALOG_PAUSED_REASON_LOW_DISK = 6,
//
// Paused due to need for delayed recovery
//
CATALOG_PAUSED_REASON_DELAYED_RECOVERY = 7,
//
// Paused due to user activity on the machine
//
CATALOG_PAUSED_REASON_USER_ACTIVE = 8,
//
// Paused by external request
//
CATALOG_PAUSED_REASON_EXTERNAL = 9,
//
// Paused by upgrading
//
CATALOG_PAUSED_REASON_UPGRADING = 10
} CatalogPausedReason;
[
object,
uuid(AB310581-AC80-11D1-8DF3-00C04FB6EF50),
pointer_default(unique)
]
interface ISearchCatalogManager: IUnknown
{
////////////////////////////////////////////////////////////////////////////
//
// Basic catalog properties
//
//
// Get the name of the catalog
//
[propget]
HRESULT Name([out, retval, string] LPWSTR *pszName);
//
// Get or set parameters for the catalog
//
// Some examples:
// MaxBytesPerFile (307,200 bytes)
// MaxBytesPerProperty (8k)
// Default timeouts, authentication
HRESULT GetParameter([in, string] LPCWSTR pszName, [out, retval] PROPVARIANT **ppValue);
HRESULT SetParameter([in, string] LPCWSTR pszName, [in] PROPVARIANT *pValue);
//
// Get the status of the catalog
//
// If *pStatus is CATALOG_STATUS_PAUSED, further information
// may be obtained from the pPausedReason parameter.
//
HRESULT GetCatalogStatus([out] CatalogStatus *pStatus, [out] CatalogPausedReason *pPausedReason);
////////////////////////////////////////////////////////////////////////////
//
// Catalog control
//
//
// Reset the underlying catalog by rebuilding databases, etc. then
// reindex everything.
//
HRESULT Reset();
//
// Reindex all of the URL's in the catalog. The old information
// will remain until it is replaced by new information.
//
HRESULT Reindex();
//
// Force reindexing URL's that match the pattern
// This is useful to for example recrawl everything in a
// particular directory or with a particular extension.
//
HRESULT ReindexMatchingURLs([in, string] LPCWSTR pszPattern);
//
// Reindex all of the paths that the search root pszRootURL encompasses
//
HRESULT ReindexSearchRoot([in, string] LPCWSTR pszRootURL);
////////////////////////////////////////////////////////////////////////////
//
// Timeouts
//
//
// Timeout information for connection and data from TIMEOUT_INFO
//
//
// Set the current connect timeout
//
[propput]
HRESULT ConnectTimeout([in] DWORD dwConnectTimeout);
//
// Get the current connect timeout
//
[propget]
HRESULT ConnectTimeout([out, retval] DWORD *pdwConnectTimeout);
//
// Set the current data timeout
//
[propput]
HRESULT DataTimeout([in] DWORD dwDataTimeout);
//
// Get the current data timeout
//
[propget]
HRESULT DataTimeout([out, retval] DWORD *pdwDataTimeout);
////////////////////////////////////////////////////////////////////////////
//
// Catalog information
//
//
// Number of items in this catalog
//
HRESULT NumberOfItems([out, retval] LONG *plCount);
//
// Number of items pending indexing
//
HRESULT NumberOfItemsToIndex([out] LONG *plIncrementalCount, [out] LONG *plNotificationQueue,
[out] LONG *plHighPriorityQueue);
//
// URL currently being indexed
//
HRESULT URLBeingIndexed([out, retval, string] LPWSTR *pszUrl);
//
// Current indexing state of URL
//
HRESULT GetURLIndexingState([in, string] LPCWSTR pszURL, [out, retval] DWORD *pdwState);
////////////////////////////////////////////////////////////////////////////
//
// Notifications
//
HRESULT GetPersistentItemsChangedSink([out, retval] ISearchPersistentItemsChangedSink **ppISearchPersistentItemsChangedSink);
//
// When an item is indexed, a notification will be passed to
// the sink if the user token used when registering has access to
// the newly indexed item. If query is NULL, then InView will
// always be FALSE. If query is specified then InView will
// reflect whether or not the newly indexed item is then in
// the view. The select list will be used to return information
// on the newly indexed item. If the select list is only docid,
// then no values will be generated.
//
// Related to PQS
//
//
// When the interface is registered, a cookie is returned. This cookie
// is passed in to unregister the view
//
HRESULT RegisterViewForNotification([in, string] LPCWSTR pszView,
[in] ISearchViewChangedSink *pViewChangedSink,
[out] DWORD *pdwCookie);
//
// Get the change notification sink interface
//
HRESULT GetItemsChangedSink([in] ISearchNotifyInlineSite *pISearchNotifyInlineSite,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv,
[out] GUID *pGUIDCatalogResetSignature,
[out] GUID *pGUIDCheckPointSignature,
[out] DWORD *pdwLastCheckPointNumber );
HRESULT UnregisterViewForNotification([in] DWORD dwCookie);
//
// Exclude (fExclude is TRUE): Add extension to list of excluded extensions
// Include: (fExclude is FALSE): Remove this from the list of excluded
// extensions so that it is indexed.
//
HRESULT SetExtensionClusion([in, string] LPCWSTR pszExtension, [in] BOOL fExclude);
//
// Enumerate excluded extensions - extensions are included by default,
// so only the excluded ones need to be looked at.
//
HRESULT EnumerateExcludedExtensions([out, retval] IEnumString **ppExtensions);
////////////////////////////////////////////////////////////////////////////
//
// Return a query helper
//
HRESULT GetQueryHelper([out, retval] ISearchQueryHelper **ppSearchQueryHelper);
//
// Sensitive to diacritics
//
[propput]
HRESULT DiacriticSensitivity([in] BOOL fDiacriticSensitive);
[propget]
HRESULT DiacriticSensitivity([out, retval] BOOL *pfDiacriticSensitive);
////////////////////////////////////////////////////////////////////////////
//
// Crawl scope manager for catalog
//
HRESULT GetCrawlScopeManager([out, retval] ISearchCrawlScopeManager **ppCrawlScopeManager);
};
[v1_enum] enum tagPRIORITIZE_FLAGS
{
// In prioritization, kick off a retry of items that have failed indexing with the
// requested pattern.
PRIORITIZE_FLAG_RETRYFAILEDITEMS = 0x00000001,
// Valid only in combination with PRIORITIZE_FLAG_RETRYFAILEDITEMS.
// Normally, items are no longer retried after a series of failed indexing attempts.
// This flag indicates that those items should also be re-attempted.
PRIORITIZE_FLAG_IGNOREFAILURECOUNT = 0x00000002
};
typedef int PRIORITIZE_FLAGS;
[
object,
uuid(7AC3286D-4D1D-4817-84FC-C1C85E3AF0D9),
pointer_default(unique)
]
interface ISearchCatalogManager2 : ISearchCatalogManager
{
//
// Allow the indexer to prioritize the given pattern of URLs over other potential
// tasks.
//
HRESULT PrioritizeMatchingURLs([in, string] LPCWSTR pszPattern, [in] PRIORITIZE_FLAGS dwPrioritizeFlags);
};