Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu aşağıdaki gibi düzenlenmiştir:
Windows Search'te sorgulama hakkında
Windows Search'te sorgulama aşağıdaki dört yaklaşımı temel alır:
- Gelişmiş Sorgu Söz Dizimi (AQS)
- Doğal Sorgu Söz Dizimi (NQS)
- Yapılandırılmış Sorgu Dili (SQL)
- Yapılandırılmış sorgu arabirimleri
AQS, Windows Search tarafından dizini sorgulamak ve arama parametrelerini daraltmak ve daraltmak için kullanılan varsayılan sorgu söz dizimidir. AQS öncelikli olarak kullanıcıya yöneliktir ve kullanıcılar tarafından AQS sorguları oluşturmak için kullanılabilir, ancak geliştiriciler tarafından program aracılığıyla sorgu oluşturmak için de kullanılabilir. Windows 7'de kurallı AQS kullanıma sunulmuştur ve program aracılığıyla AQS sorguları oluşturmak için kullanılmalıdır. Windows 7 ve sonraki sürümlerde, bir AQS koşulu karşılanıp karşılanmadığına bağlı olarak bir kısayol menüsü seçeneği kullanılabilir. Daha fazla bilgi için bağlam menüsü işleyicileri oluşturma 'de "Gelişmiş Sorgu Söz Dizimi Kullanarak Statik Fiiller için Dinamik Davranış Alma" bölümüne bakın. AQS sorguları, dosya türleri olarak bilinen belirli dosya türleriyle sınırlandırılabilir. Daha fazla bilgi için bkz. Dosya Türleri ve İlişkilendirmeleri. İlgili özelliklerle ilgili başvuru belgeleri için bkz. System.Kind ve System.KindText.
NQS, AQS'den daha rahat olan ve insan diline benzer bir sorgu söz dizimidir. NQS, varsayılan AQS yerine NQS seçilirse dizini sorgulamak için Windows Search tarafından kullanılabilir.
SQL, sorguları tanımlayan bir metin dilidir. SQL, birçok farklı veritabanı teknolojisinde yaygındır. Windows Search SQL kullanır, bir alt kümesini uygular ve dile öğe ekleyerek genişletir. Windows Search SQL, metin tabanlı aramalarla kullanışlılığını artırmak için standart SQL-92 ve SQL-99 veritabanı sorgu söz dizimini genişletir. Windows Search SQL'in tüm özellikleri, Windows XP ve Windows Server 2003 ve sonraki sürümlerde Windows Search ile uyumludur. Windows Search SQL hakkında daha fazla bilgi için bkz. Windows Search SQL Söz Dizimi ile Dizini Sorgulama ve Windows Search SQL Söz Dizimine Genel Bakış.
Yapılandırılmış sorgu API'leri bu konunun ilerleyen bölümlerinde açıklanmıştır. Yapılandırılmış sorgu API'leri hakkında başvuru belgeleri için bkz. Sorgu Arabirimleri. ISearchQueryHelper gibi arabirimler, bir dizi giriş değerinden SQL dizeleri oluşturmanıza yardımcı olur. Bu arabirim, AQS kullanıcı sorgularını Windows Search SQL'e dönüştürür ve SQL'de ifade edilebilen ancak AQS'de ifade edilebilecek sorgu kısıtlamalarını belirtir. ISearchQueryHelper , Windows Search veritabanına bağlanmak için bir OLE DB bağlantı dizesi de alır.
Yerel ve uzak sorgular
Sorgularınızı yerel olarak veya uzaktan yürütebilirsiniz. aşağıdaki örnekte FROM yan tümcesi kullanan yerel bir sorgu gösterilmiştir. Yerel sorgu yalnızca yerel SystemIndex kataloğunu sorgular.
FROM SystemIndex
Aşağıdaki örnekte, FROM yan tümcesi kullanan bir uzaktan sorgu gösterilmiştir. ComputerName eklemek önceki örneği uzak sorguya dönüştürür.
FROM [<ComputerName>.]SystemIndex
Varsayılan olarak, Windows XP ve Windows Server 2003'de Windows Search yüklü değildir. Yalnızca Windows Search 4 (WS4) uzak sorgu desteği sağlar. Windows Masaüstü Araması'nın (WDS) 3.01 ve önceki sürümleri gibi önceki sürümleri uzaktan sorgulamayı desteklemez. Windows Gezgini ile dosya sistemi öğeleri ("dosya:" protokolü tarafından işlenen öğeler) için uzak bilgisayarın yerel dizinini sorgulayabilirsiniz.
Bir öğeyi uzak sorguyla almak için öğenin aşağıdaki gereksinimleri karşılaması gerekir:
- Evrensel Adlandırma Kuralı (UNC) yoluyla erişilebilir.
- İstemcinin erişimi olan uzak bilgisayarda bulunur.
- İstemcinin Okuma erişimine sahip olması için güvenlik ayarlarını ona uygun şekilde ayarlayın.
Windows Gezgini'nde , Ağ ve Paylaşım Merkezi'nde "Genel" paylaşımı (\\Machine\Public\...) ve Paylaşım Sihirbazı aracılığıyla paylaşılan öğeler için "Kullanıcılar" paylaşımı (\\Machine\Users\...) gibi öğeleri paylaşma özellikleri vardır. Klasörleri paylaştıktan sonra, FROM yan tümcesinde uzak bilgisayarın makine adını ve SCOPE yan tümcesindeki uzak bilgisayarda unc yolunu belirterek yerel dizini sorgulayabilirsiniz. FROM ve SCOPE yan tümcelerini kullanan bir uzak sorgu aşağıdaki örnekte gösterilmiştir.
SELECT System.ItemName FROM MachineName.SystemIndex WHERE SCOPE='file://MachineName/<path>'
Burada sağlanan örneklerde SQL kullanılır.
Yapılandırılmış sorgu API'lerine genel bakış
Yapılandırılmış sorgu, tek tek özellikler üzerinde Boole birleşimlerine göre bilgi arama olanağı sağlar. Bu konuda, en önemli yapılandırılmış sorgu API'lerinin ve yöntemlerinin işlevselliğini özetleyeceğiz. Yapılandırılmış sorgu API'leri hakkında başvuru belgeleri için bkz. Sorgu Arabirimleri.
IQueryParser
IQueryParser::P arse yöntemi bir kullanıcı giriş dizesini ayrıştırır ve IQuerySolution biçiminde bir yorum oluşturur. Bu yöntemin pCustomProperties parametresi null değilse, IRichChunk nesnelerinin bir sabit listesidir (tanınan her özel özellik için bir tane). Diğer IQueryParser yöntemleri, uygulamanın çeşitli adlandırılmış varlık türleri için yerel ayar, şema, sözcük ayırıcı ve işleyiciler gibi çeşitli seçenekler ayarlamasına izin verir. IQueryParser::GetSchemaProvider , yüklenen şemaya göz atmak için bir ISchemaProvider arabirimi döndürür.
IQuerySolution : IConditionFactory
IQuerySolution arabirimi, bir giriş dizesini ayrıştırma sonucuyla ilgili tüm bilgileri sağlar. IQuerySolution aynı zamanda bir IConditionFactory arabirimi olduğundan, ek koşul ağacı düğümleri oluşturulabilir. IQuerySolution::GetQuery yöntemi, yorumlama için bir koşul ağacı oluşturur. IQuerySolution::GetQuery de semantik türü döndürür.
IConditionFactory
IConditionFactory , koşul ağacı düğümleri oluşturur. IConditionFactory::MakeNot'unsimplify parametresi VARIANT_TRUE ise, sonuçta elde edilen ICondition basitleştirilmiştir ve bir olumsuzlama düğümü olması gerekmez. IConditionFactory::MakeAndOröğesinin pSubConditions parametresi null değilse, bu parametre ICondition nesnelerinin bir numaralandırması olmalı ve alt ağaç haline gelmelidir. IConditionFactory::MakeLeaf belirtilen özellik adına, işlemine ve değerine sahip bir yaprak düğüm oluşturur. pValueType parametresindeki dize, şemadaki anlamsal türün adı olmalıdır. Expand parametresi VARIANT_TRUE ve özelliği sanalsa, sonuçta elde edilen koşul ağacı genellikle özelliğin tanımlanan bileşenlere genişletilmesinden kaynaklanan bir ayrıştırmadır. Null değilse , pPropertyNameTerm, pOperatorTerm ve pValueTerm parametreleri özelliği, işlemi ve değeri belirten terimleri tanımlamalıdır.
ICondition : IPersistStream
ICondition arabirimi, bir koşul ağacındaki tek bir düğümdür. Düğüm bir olumsuzlama düğümü, AND düğümü, VEYA düğümü veya yaprak düğüm olabilir. Yaprak olmayan bir düğüm için ICondition::GetSubConditions alt ağaçlarının bir numaralandırmasını döndürür. Yaprak düğüm için aşağıdaki ICondition yöntemleri aşağıdaki değerleri döndürür:
- GetComparisonInfo özellik adını, işlemini ve değerini döndürür.
- GetValueType, değerin semantik türünü döndürür. Bu tür, IConditionFactory::MakeLeaf'ınpszValueType parametresinde özgüldü.
- GetValueNormalization değerin dize biçimini döndürür. (Değer zaten bir dizeyse, bu form büyük/küçük harf, vurgu vb. ile normalleştirilir.)
- GetInputTerms , giriş cümlesinin hangi bölümlerinin özellik adını, işlemini ve değerini oluşturduğu hakkında bilgi döndürür.
- Clone , bir koşul ağacının derin bir kopyasını döndürür.
IRichChunk
Her IRichChunk nesnesi bir belirteç aralığı ve bir dize tanımlar. IRichChunk , başlangıç konumu ve uzunluğuyla tanımlanan bir yayılma alanı (genellikle belirteçlerin yayılma alanı) hakkındaki bilgileri temsil eden bir yardımcı program arabirimidir. Bu yayılma alanı bilgileri bir dize ve/veya VARIANT içerir.
IConditionGenerator
IConditionGenerator arabirimi, adlandırılmış bir varlık türü için tanıma ve koşul ağacı oluşturmayı işlemek üzere uygulama tarafından sağlanır. Koşul oluşturucu, IQueryParser::SetMultiOption aracılığıyla bir IQueryParser'a verilir. IQueryParser , yüklü olan şema için IConditionGenerator::Initialize öğesini bir ISchemaProvider ile çağırır. Bunu yapmak , IConditionGenerator'ın gerekli şema bilgilerini almasına izin verir. Bir giriş dizesini ayrıştırırken, IQueryParser her IConditionGenerator'ın IConditionGenerator::RecognizeNamedEntities yöntemini çağırır, böylece giriş dizesinde tanıdığı adlandırılmış varlıkların oluşumu bildirilebilir. IQueryParser geçerli yerel ayarı kullanabilir ve herhangi bir adlandırılmış varlığın belirteç aralıklarını raporlaması gerektiğinden girişin belirteçleştirmesini kullanmalıdır.
IQueryParser bir yaprak düğüm yaymak üzereyken ve değerin semantik türü bir IConditionGenerator için adlandırılmış varlık türüyle eşleştiğinde, oluşturulacak düğümün bilgileriyle birlikte IQueryParser, IConditionGenerator::GenerateforLeaf çağrısı yapar. IConditionGenerator S_OK döndürürse, bir koşul ağacı (yaprak düğüm olması gerekmez) döndürmeli ve IQueryParser'a normalde önlem olarak oluşturacağı alternatif dize yorumunu gizlemesi gerekip gerekmediğini bildirmelidir.
ITokenCollection
ITokenCollection::NumberOfTokens yöntemi belirteç sayısını döndürür. ITokenCollection::GetToken, i. belirteç hakkındaki bilgileri döndürür. Başlangıç ve uzunluk, giriş dizesindeki karakter konumlarıdır. Döndürülen metin null olmayan yalnızca giriş dizesinden karakterleri geçersiz kılmaya yönelik bir metin varsa olur. Bu, örneğin, bu tire bir olumsuzlama olarak yorumlanması gereken bir bağlamda olduğunda, giriş dizesindeki bir tireyi DEĞİl ile geçersiz kılmak için kullanılır.
INamedEntityCollector
IConditionGenerator , tanıdığı her adlandırılmış varlık için INamedEntityCollector::Add öğesini çağırır. Span'lar belirteç yayılma alanlarıdır. Her zaman beginSpan durumu olmalıdır. beginActual<endActual ? endSpan. beginSpan ve endSpanbeginActual ve endActual arasında farklılık gösterebilir Adlandırılmış varlık tırnak işaretleri gibi önemsiz belirteçlerle başlıyor ve/veya bitiyorsa (yine de adlandırılmış varlık kapsamındadır). Değerin bir dize olarak ifade edilmesi gerekir ve daha sonra IConditionGenerator::GenerateForLeaf çağrısında görünür.
ISchemaProvider
ISchemaProvider arabirimi, varlıklar (türler) ve ilişkiler (özellikler) için yüklenen şemaya göz atmak için kullanılabilir. Tek tek yöntemlerin yaptıkları şunlardır:
- Varlıklar , şemadaki her varlığın (IEntity) bir numaralandırmasını döndürür.
- RootEntity , şemanın kök varlığını döndürür. Düz şema için her IQuerySolution ana türü döndürülür.
- GetEntity ada göre bir varlık bulur ve şemada böyle bir varlık yoksa S_FALSE döndürür.
- MetaVeri , IMetaData arabirimlerinin bir numaralandırması döndürür.
IEntity
IEntity arabirimi, adı olan, diğer türlere (özellikler) yönelik bir dizi adlandırılmış ilişkiye sahip olan ve bir temel varlıktan türetilen bir türü temsil eden bir şema varlığıdır. İşte her bir yöntemin yaptığı şeyler:
- IEntity::İlişkiler , bu türdeki her giden ilişki için bir IRelationship nesnesi numaralandırması döndürür. Bir varlığın giden her ilişkisinin bir adı vardır.
- IEntity::GetRelationship isme göre bir ilişki bulur ve bu varlık için böyle bir ilişki yoksa S_FALSE döndürür.
- IEntity::MetaData , bu varlığın her meta veri çifti için bir tane olmak üzere IMetaData arabirimlerinin bir numaralandırmasını döndürür.
- IEntity::D efaultPhrase , bir koşul ağacının AQS veya NQS yeniden ifadesini oluşturmayı kolaylaştırmak için varsayılan bir tümcecik döndürür.
İlişkilendirme
IRelationship arabirimi iki varlık arasındaki ilişkiyi temsil eder: kaynak ve hedef. Tek tek yöntemlerin yaptıkları şunlardır:
- IRelationship::IsReal , bir ilişkinin gerçek olup olmadığını bildirir. Örneğin, A varlığı B varlığından türetilirse ve ondan R adlı bir ilişki devralırsa, A'nın yine de R adlı kendi ilişkisi olabilir. Ancak, A ile R arasındaki ilişki B ile aynı hedef türüne sahip olmalıdır ve bunun var olmasının tek nedeni B'ye özgü meta verileri depolamaktır. Böyle bir B ilişkisinin gerçek olmadığı söylenir.
- IRelationship::Medadata , bu varlığın her meta veri çifti için bir tane olmak üzere IMetaData arabirimlerinin bir numaralandırmasını döndürür.
- IRelationship::D efaultPhrase , yeniden ifadelerde bu ilişki için kullanılacak varsayılan tümceciği döndürür. Her ilişkinin, bir koşul ağacının AQS veya NQS yeniden ifadesini oluşturmayı kolaylaştırmak için bunu belirten varsayılan bir tümceciği vardır.
IMetaData
Meta veriler, her biri bir varlık, ilişki veya şemanın tamamıyla ilişkili anahtar-değer çiftleridir. Anahtarlar mutlaka benzersiz olmadığından, meta veri koleksiyonu çok eşlemeli olarak düşünülebilir. Meta veri çiftinin anahtarını ve değerini almak için IMetaData::GetData çağrılır.
Senaryoları sorgulama
Aşağıdaki senaryolarda, bir koşul ağacı oluşturma ve dizini sorgulama gibi yaygın sorgu senaryolarında Windows Search'te yapılandırılmış sorgu API'lerinin kullanımı açıklanmaktadır.
Koşul ayıklama ve sorgu ayrıştırma
Sorgu oluşturulduğunda, kapsamı sisteme nerede arama yapılacağı söylenerek tanımlanır. Bu, arama sonuçlarını kısıtlar. Kapsam tanımlandıktan sonra bir filtre uygulanır ve bir filtre kümesi döndürülür. Arama sonuçları, grafiğe benzer şekilde yaprak düğümleri olan bir koşul ağacı oluşturarak kısıtlanır. Bu koşullar daha sonra çıkarılır. Koşul ağacı, her biri bir işlem aracılığıyla bir özelliği bir değerle ilişkilendiren yaprak koşulların Boole bileşimidir (AND, OR, NOT). Yaprak düğüm, bazı işlemler aracılığıyla bir değer için tek bir özelliğin kısıtlamasını temsil eder.
Filtre kısıtlaması, kısıtlamayı açıklayan bir mantıksal ifade gerektirir. Bu ifadeyi tanımlamak, bir koşul ağacında tek bir düğüm oluşturmak için kullanılan ICondition arabirimiyle başlar. Aşağıdaki örnekte yalnızca bir koşul olduğundan ağaç değişmez.
[
object,
uuid(0FC988D4-C935-4b97-A973-46282EA175C8),
pointer_default(unique)
]
interface ICondition : IPersistStream
{
HRESULT GetConditionType([out, retval] CONDITION_TYPE* pNodeType);
HRESULT GetSubConditions([in] REFIID riid, [out, retval, iid_is(riid)] void** ppv);
[local] HRESULT GetComparisonInfo([out, annotation("__deref_opt_out")] LPWSTR *ppszPropertyName, [out, annotation("__out_opt")] CONDITION_OPERATION *pOperation, [out, annotation("__out_opt")] PROPVARIANT *pValue);
HRESULT GetValueType([out, retval] LPWSTR* ppszValueTypeName);
HRESULT GetValueNormalization([out, retval] LPWSTR* ppszNormalization);
[local] HRESULT GetInputTerms([out, annotation("__out_opt")] IRichChunk** ppPropertyTerm, [out, annotation("__out_opt")] IRichChunk** ppOperationTerm, [out, annotation("__out_opt")] IRichChunk** ppValueTerm);
HRESULT Clone([out, retval] ICondition** ppc);
};
Birden fazla filtre koşulu varsa, tek bir ağaç elde etmek için VE ve diğer Boole işleçleri kullanılır. AND ağaçları ve OR ağaçları, alt ağaçlarının bağlaçlarını ve ayrıştırmalarını temsil eder. NOT ağacı, tek bir alt ağacının negasyonunu temsil eder. AQS, Boole işleçleriyle mantıksal ifadeler elde etmek için bir metin yaklaşımı sağlar ve genellikle daha basittir.
Sonraki örnekte koşul ağacını (ICondition) görsel forma dönüştüreceğiz. IQueryParser arabirimini kullanan sorgu ayrıştırıcısı, ICondition'ı zengin metin biçimli (RTF) bir sorgu dizesine dönüştürür. IQueryParser::RestateToString yöntemi sorgu metnini döndürürken, IQueryParser::P arse yöntemi bir IQuerySolution arabirimi üretir. Aşağıdaki örnekte bunların nasıl gerçekleştirildiğini gösterilmektedir.
[
object,
uuid(2EBDEE67-3505-43f8-9946-EA44ABC8E5B0),
pointer_default(unique)
]
interface IQueryParser : IUnknown
{
HRESULT Parse([in] LPCWSTR pszInputString, [in] IEnumUnknown* pCustomProperties, [out, retval] IQuerySolution** ppSolution);
HRESULT SetOption([in] STRUCTURED_QUERY_SINGLE_OPTION option, [in] PROPVARIANT const* pOptionValue);
HRESULT GetOption([in] STRUCTURED_QUERY_SINGLE_OPTION option, [out, retval] PROPVARIANT* pOptionValue);
HRESULT SetMultiOption([in] STRUCTURED_QUERY_MULTIOPTION option, [in] LPCWSTR pszOptionKey, [in] PROPVARIANT const* pOptionValue);
HRESULT GetSchemaProvider([out, retval] ISchemaProvider** ppSchemaProvider);
HRESULT RestateToString([in] ICondition* pCondition, [in] BOOL fUseEnglish, [out] LPWSTR* ppszQueryString);
HRESULT ParsePropertyValue([in] LPCWSTR pszPropertyName, [in] LPCWSTR pszInputString, [out, retval] IQuerySolution** ppSolution);
HRESULT RestatePropertyValueToString([in] ICondition* pCondition, [in] BOOL fUseEnglish, [out] LPWSTR* ppszPropertyName, [out] LPWSTR* ppszQueryString);
};
IQueryParser::P arse öğesinin ana girişi ayrıştırılacak bir kullanıcı giriş dizesidir, ancak uygulama sorgu ayrıştırıcısını girişte tanıdığı özellikler hakkında da bilgilendirebilir (uygulamaya özgü söz diziminden). IQueryParser::P arse çıktısı, ayrıştırma çağrısıyla ilgili tüm bilgileri sağlayan bir IQuerySolution'dır. Giriş dizesini, giriş dizesinin belirteç haline nasıl getirildiğini, ayrıştırma hatalarını ve ayrıştırılan sorguyu bir ICondition ile temsil edilen koşul ağacı olarak elde etmek için yöntemler vardır. Aşağıdaki örnekte ...
[
object,
uuid(D6EBC66B-8921-4193-AFDD-A1789FB7FF57),
pointer_default(unique)
]
interface IQuerySolution : IConditionFactory
{
[local] HRESULT GetQuery([out, annotation("__out_opt")] ICondition** ppQueryNode, [out, annotation("__out_opt")] IEntity** ppMainType);
HRESULT GetErrors([in] REFIID riid, [out, retval, iid_is(riid)] void** ppParseErrors);
[local] HRESULT GetLexicalData([out, annotation("__deref_opt_out")] LPWSTR* ppszInputString, [out, annotation("__out_opt")] ITokenCollection** ppTokens, [out, annotation("__out_opt")] LCID* pLocale, [out, annotation("__out_opt")] IUnknown** ppWordBreaker);
}
Önceki örnekte , IQuerySolution::GetQuery özgün metin, metni oluşturan belirteçler veya koşul ağacı dahil olmak üzere sorgu hakkında herhangi bir bilgi edinebilir. Döndürülen olası sorgu değerlerinin örnekleri aşağıdaki tabloda listelenmiştir.
| Döndürülen sorgu değerleri örnekleri | Açıklama |
|---|---|
author:relja OR author:tyler |
IQueryParser::RestateToString'in döndürdüğü sorgu metni |
?author?, ?:?, ?relja?, ?OR?, ?author?, ?:?, ?tyler? |
Belirteçlerin ayrıntılı analizi |
|
Çözümlenmemiş bir koşul ağacı |
Döndürülen ilk koşul ağacı çözümlenmemiş. Çözümlenmemiş bir koşul ağacında, date:yesterday gibi tarih ve saat referansları mutlak zamana çevrilmez. Ayrıca, sanal özellikler genişletilmemiştir. Sanal özellikler, birden çok özelliğin toplamları gibi davranan özelliklerdir.
Örneğin, sorgu kind:email from:reljai aşağıdaki çözümlenmemiş ve çözümlenmiş koşul ağaçlarını oluşturur. Çözümlenmemiş koşul ağacı solda, çözümlenen koşul ağacı ise sağdadır.
Çözümlenen ağaç IConditionFactory::Resolve çağrılarak elde edilebilir. Ancak , SQRO_DONT_RESOLVE_DATETIME geçirildiğinde tarih ve saat çözümlenmemiş olarak kalır. Çözümlenmemiş bir koşul ağacı sorgu hakkında bilgi içerdiğinden, çözümlenmemiş bir koşul ağacının avantajları vardır. Her yaprak düğüm, IRichChunk arabirimini kullanırken özelliğine, işlecine ve değerine karşılık gelen IQuerySolution::GetLexicalData tarafından döndürülen belirteçlere işaret eder. Aşağıdaki örnekte ...
interface ITokenCollection : IUnknown
{
HRESULT NumberOfTokens(ULONG* pCount);
HRESULT GetToken([in] ULONG i, [out, annotation("__out_opt")] ULONG* pBegin, [out, annotation("__out_opt")] ULONG* pLength, [out, annotation("__deref_opt_out")] LPWSTR* ppsz);
};
ICondition:: GetInputTerms([out, annotation("__out_opt")]
IRichChunk** ppPropertyTerm, [out, annotation("__out_opt")]
IRichChunk** ppOperationTerm, [out, annotation("__out_opt")]
IRichChunk** ppValueTerm);
interface IRichChunk : IUnknown
{
HRESULT GetData([out, annotation("__out_opt")] ULONG* pFirstPos, [out, annotation("__out_opt")] ULONG* pLength, [out, annotation("__deref_opt_out")] LPWSTR* ppsz, [out, annotation("__out_opt")] PROPVARIANT* pValue);
}
Dizini sorgulama
Dizini sorgulamaya yönelik çeşitli yaklaşımlar vardır. Bazıları SQL'i, bazıları ise AQS'yi temel alır. Ayrıca, program aracılığıyla arabirimleri sorgulayarak Windows Search dizinini de sorgulayabilirsiniz. Dizini sorgulamaya özgü üç arabirim vardır: ISearchQueryHelper, IRowsetPrioritization ve IRowsetEvents. Kavramsal bilgi için bkz. Dizini Program Aracılığıyla Sorgulama.
ISearchQueryHelper arabirimini kullanarak dizini sorgulamak için bir bileşen veya yardımcı sınıfı geliştirebilirsiniz. Bu arabirim, hem ISearchCatalogManager hem de ISearchCatalogManager2yardımcı sınıfı olarak uygulanmakta ve ISearchCatalogManager::GetQueryHelperçağrılarak elde edilmektedir. Kavramsal bilgi için bkz. ISearchQueryHelper ile Dizini Sorgulama.
ISearchQueryHelper , şu işlemleri kullanmanıza izin verir:
- Windows Search veritabanına bağlanmak için bir OLE DB bağlantı dizesi alın.
- AQS kullanıcı sorgularını Windows Search SQL'e dönüştürün.
- SQL'de ifade edilebilecek ancak AQS'de ifade edilmeyecek sorgu kısıtlamalarını belirtin.
Dizin önceliklendirme ve satır kümesi olayları Windows 7 ve sonraki sürümlerde desteklenir. IRowsetPrioritization ile, istemcinin belirli bir sorguda kullanılan kapsamlara normal önceliğe göre daha yüksek bir öncelik verilmesini istemesini sağlayan bir öncelik yığını vardır. IRowsetEvents , yeni öğelerin eklenmesi, öğelerin silinmesi ve öğe verilerinin değiştirilmesi dahil olmak üzere satır kümelerindeki öğelerde yapılan değişikliklerin bildirimini sağlar. Satır kümesi olay bildirimlerini kullanmak, mevcut sorguların sonuçlarının mümkün olduğunca güncel olmasını sağlar. Kavramsal bilgi için bkz. Windows 7'de Dizin ÖncelikLendirme ve Satır Kümesi Olayları.
İlgili konular