Bagikan melalui


Prioritas Pengindeksan dan Peristiwa Set Baris di Windows 7

Topik ini menguraikan pengenalan prioritas pengindeksan dan peristiwa set baris untuk Windows 7.

Topik ini diatur sebagai berikut:

Prioritas Pengindeksan dan Peristiwa Set Baris

Di Windows 7?dan yang lebih baru, ada tumpukan prioritas di mana konteks kueri tertentu, klien dapat meminta agar cakupan yang digunakan dalam kueri tersebut diprioritaskan di atas item normal.

Tumpukan prioritas ini memiliki karakteristik berikut:

  • Item dalam tumpukan dapat memiliki prioritas latar depan, tinggi, atau rendah:
    • Latar depan: Logika backoff dilewati dan pengindeksan berlanjut secepat yang diizinkan mesin.
    • Tinggi: Prioritas telah diminta dengan backoff.
    • Rendah: Prioritas telah diminta, bukan dengan mengorbankan cakupan lain pada tumpukan, tetapi di atas pengindeksan yang tidak diprioritaskan.
  • Setiap permintaan untuk prioritas tinggi atau latar depan menabrak kueri yang meminta ke bagian atas tumpukan secara otomatis.
  • Hanya item di atas tumpukan yang dapat memiliki prioritas latar depan.
  • Kueri dengan prioritas latar depan yang terbentur dalam prioritas menerima peristiwa yang memberi tahunya bahwa ia telah kehilangan prioritas latar depan dan telah menjadi prioritas tinggi dengan backoff.

Tumpukan prioritas menetapkan prioritas keseluruhan item yang diproses dalam pengindeks sebagai berikut:

  • Pemberitahuan Prioritas Tinggi tidak memiliki backoff, dan biasanya dikirim hanya untuk sejumlah kecil item. Misalnya, Windows Explorer menggunakan prioritas ini untuk operasi mesin salinan kecil.

  • Priority Stack adalah bagian atas tumpukan, memiliki backoff, dan merupakan kueri prioritas terakhir yang diminta.

  • Kueri kedua dalam tumpukan.

  • Kueri ketiga dalam tumpukan.

  • Kueri keempat dalam tumpukan, dan sebagainya.

  • Item Prioritas Normal.

  • Item yang dihapus.

    Catatan

    Item dalam setiap grup diprioritaskan secara internal melalui semantik per item yang lebih lama.

     

Contoh IRowsetPriorization

API utama untuk pekerjaan prioritas tersedia melalui antarmuka berikut, yang dapat dipanggil dengan mengkueri set baris yang dikembalikan:

typedef [v1_enum] enum
{
    PRIORITY_LEVEL_FOREGROUND           = 0,    // process items in the scope first as quickly as possible
    PRIORITY_LEVEL_HIGH                 = 1,    // process items in the scope first at the normal rate
    PRIORITY_LEVEL_LOW                  = 2,    // process items in this scope before those at the normal rate, but after any other prioritization requests
    PRIORITY_LEVEL_DEFAULT              = 3     // process items at the normal indexer rate
} PRIORITY_LEVEL;


[
    object,
    uuid(IRowsetPrioritization_GUID),
    pointer_default(unique)
]
interface IRowsetPrioritization : IUnknown
{
    // Sets or retrieves the current indexer prioritization level for the scope specified by
    // this query.

    HRESULT SetScopePriority( [in] PRIORITY_LEVEL priority, [in] DWORD scopeStatisticsEventFrequency );
    HRESULT GetScopePriority( [out] PRIORITY_LEVEL * priority, [out] DWORD * scopeStatisticsEventFrequency );

    // Gets information describing the scope specified by this query:
    // indexedDocumentCount     -   The total number of documents currently indexed in the scope
    // oustandingAddCount       -   The total number of documents yet to be indexed in the scope (those not yet included in indexedDocumentCount)
    // oustandingModifyCount    -   The total number of documents indexed in the scope that need to be re-indexed (included in indexedDocumentCount)
    
    HRESULT GetScopeStatistics( [out] DWORD * indexedDocumentCount, [out] DWORD * oustandingAddCount, [out] DWORD * oustandingModifyCount );
};

Prioritas set baris berfungsi sebagai berikut:

  1. IRowsetPrioritization diperoleh dengan Metode IUnknown::QueryInterface pada rowset pengindeks. DBPROP_ENABLEROWSETEVENTS harus diatur ke TRUE dengan metode OLE DB ICommandProperties::SetProperties sebelum menjalankan kueri untuk menggunakan prioritas rowset.
  2. IRowsetPrioritization::SetScopePriority mengatur prioritas untuk cakupan milik kueri, dan interval peristiwa statistik cakupan dinaikkan ketika ada dokumen luar biasa yang akan diindeks dalam cakupan kueri. Kejadian ini dinaikkan jika tingkat prioritas diatur ke default.
  3. IRowsetPrioritization::GetScopeStatistics dapat digunakan untuk mendapatkan jumlah item terindeks dalam cakupan, jumlah dokumen luar biasa yang akan ditambahkan dalam cakupan, dan jumlah dokumen yang perlu diindeks ulang dalam cakupan ini.

Peristiwa IRowsetPrioritization

Ada tiga peristiwa set baris di IRowsetEvents::OnRowsetEvent dalam enumerasi ROWSETEVENT_TYPE :

    // This method allows for future notifications of various actions about your rowset or items within
    // eventType:                               - An identifier of the particular event being sent
    // pVarEventData:                           - The expected value of the EventData for each event type
    //      ROWSETEVENT_TYPE_DATAEXPIRED        - VT_EMPTY
    //      ROWSETEVENT_TYPE_FOREGROUNDLOST     - VT_EMPTY
    //      ROWSETEVENT_TYPE_SCOPESTATISTICS    - VT_VECTOR | VT_UI4 - 3 elements (0 = indexed items, 1 = outstanding adds, 2 = oustanding modifies)

    HRESULT OnRowsetEvent( [in] ROWSETEVENT_TYPE eventType, [in] REFPROPVARIANT eventData );

Peristiwa set baris adalah sebagai berikut:

  • Peristiwa ROWSETEVENT_TYPE_DATAEXPIRED menunjukkan bahwa data yang mendukung himpunan baris telah kedaluwarsa, dan bahwa set baris baru harus diminta.
  • Peristiwa ROWSET_TYPE_FOREGROUNDLOST menunjukkan bahwa item yang memang memiliki prioritas latar depan dalam tumpukan prioritas telah diturunkan, karena orang lain memprioritaskan diri mereka sendiri di depan kueri ini.
  • Peristiwa ROWSETEVENT_TYPE_SCOPESTATISTICS memberi Anda informasi yang sama yang tersedia dari panggilan metode IRowsetPrioritization::GetScopeStatistics , tetapi melalui mekanisme pendorongan, sebagai berikut:
    • Peristiwa muncul jika API prioritas telah digunakan untuk meminta tingkat prioritas non-default, dan frekuensi peristiwa statistik bukan nol.
    • Peristiwa muncul hanya ketika statistik benar-benar berubah, dan interval yang ditentukan dalam IRowsetPrioritization telah berlalu (interval tidak menjamin frekuensi peristiwa).
    • Kejadian ini dijamin akan menaikkan status "bounce zero" (nol item yang tersisa untuk ditambahkan, nol memodifikasi sisanya), asalkan peristiwa bukan nol telah dinaikkan.
    • Pengindeks dapat memproses item tanpa mengirim peristiwa ini, jika antrean bermunculan sebelum frekuensi peristiwa statistik.

Sumber Daya Tambahan

Lihat sumber daya berikut yang terkait dengan prioritas dan set baris:

Pencarian Windows 7

Baru untuk Pencarian Windows 7

Windows Shell Libraries di Windows 7