다음을 통해 공유


Windows Search에서 프로세스 쿼리

이 항목은 다음과 같이 구성됩니다.

Windows Search에서 쿼리는 다음 네 가지 방법을 기반으로 합니다.

  • AQS(고급 쿼리 구문)
  • NQS(자연 쿼리 구문)
  • SQL(구조적 쿼리 언어)(Structured Query Language)
  • 구조적 쿼리 인터페이스

AQS는 Windows Search에서 인덱스를 쿼리하고 검색 매개 변수를 구체화하고 좁히는 데 사용하는 기본 쿼리 구문입니다. AQS는 주로 사용자 연결이며 사용자가 AQS 쿼리를 빌드하는 데 사용할 수 있지만 개발자가 프로그래밍 방식으로 쿼리를 빌드하는 데 사용할 수도 있습니다. Windows 7에서는 정식 AQS가 도입되었으며 프로그래밍 방식으로 AQS 쿼리를 생성하는 데 사용해야 합니다. Windows 7 이상에서는 AQS 조건이 충족되는지 여부에 따라 바로 가기 메뉴 옵션을 사용할 수 있습니다. 자세한 내용은 상황에 맞는 메뉴 처리기 만들기에서 "고급 쿼리 구문을 사용하여 정적 동사에 대한 동적 동작 가져오기"를 참조하세요. AQS 쿼리는 파일 종류라고 하는 특정 형식의 파일로 제한될 수 있습니다. 자세한 내용은 파일 형식 및 연결을 참조하세요. 관련 속성에 대한 참조 설명서는 System.KindSystem.KindText를 참조하세요.

NQS는 AQS보다 완화되고 인간 언어와 유사한 쿼리 구문입니다. NQS는 기본 AQS 대신 NQS가 선택된 경우 Windows Search에서 인덱스를 쿼리하는 데 사용할 수 있습니다.

SQL은 쿼리를 정의하는 텍스트 언어입니다. SQL은 다양한 데이터베이스 기술에서 일반적입니다. Windows Search는 SQL을 사용하고, SQL의 하위 집합을 구현하고, 언어에 요소를 추가하여 확장합니다. Windows Search SQL은 표준 SQL-92 및 SQL-99 데이터베이스 쿼리 구문을 확장하여 텍스트 기반 검색의 유용성을 향상시킵니다. Windows Search SQL의 모든 기능은 Windows XP 및 Windows Server 2003 이상에서 Windows Search와 호환됩니다. Windows Search SQL에 대한 자세한 내용은 Windows Search SQL 구문을 사용하여 인덱스 쿼리 및 Windows Search SQL구문 개요를 참조하세요.

구조화된 쿼리 API는 이 항목의 뒷부분에서 설명합니다. 구조적 쿼리 API에 대한 참조 설명서는 쿼리 인터페이스를 참조하세요. ISearchQueryHelper와 같은 인터페이스는 입력 값 집합에서 SQL 문자열을 생성하는 데 도움이 됩니다. 이 인터페이스는 AQS 사용자 쿼리를 Windows Search SQL로 변환하고 SQL에서 표현할 수 있지만 AQS에서는 표현할 수 없는 쿼리 제한을 지정합니다. ISearchQueryHelper 는 Windows Search 데이터베이스에 연결할 OLE DB 연결 문자열도 가져옵니다.

로컬 및 원격 쿼리

로컬 또는 원격으로 쿼리를 실행할 수 있습니다. FROM 절을 사용하는 로컬 쿼리는 다음 예제에 나와 있습니다. 로컬 쿼리는 로컬 SystemIndex 카탈로그만 쿼리합니다.

FROM SystemIndex

FROM 절을 사용하는 원격 쿼리는 다음 예제에 나와 있습니다. ComputerName을 추가하면 이전 예제가 원격 쿼리로 변환됩니다.

FROM [<ComputerName>.]SystemIndex

기본적으로 Windows XP 및 Windows Server 2003에는 Windows Search가 설치되어 있지 않습니다. WS4(Windows Search 4)만 원격 쿼리 지원을 제공합니다. 3.01 이하와 같은 이전 버전의 WDS(Windows 데스크톱 검색)는 원격 쿼리를 지원하지 않습니다. Windows Explorer 사용하면 원격 컴퓨터의 로컬 인덱스에서 파일 시스템 항목("file:" 프로토콜에서 처리되는 항목)을 쿼리할 수 있습니다.

원격 쿼리로 항목을 검색하려면 항목이 다음 요구 사항을 충족해야 합니다.

  • UNC(범용 명명 규칙) 경로를 통해 액세스할 수 있습니다.
  • 클라이언트가 액세스할 수 있는 원격 컴퓨터에 존재합니다.
  • 클라이언트가 읽기 권한을 가질 수 있도록 보안을 설정합니다.

Windows Explorer 네트워크 및 공유 센터의 "공용" 공유(\\Machine\Public\...)와 공유 마법사를 통해 공유되는 항목에 대한 "사용자" 공유(\\Machine\Users\...)를 포함하여 항목을 공유하는 기능이 있습니다. 폴더를 공유한 후 FROM 절에서 원격 컴퓨터의 컴퓨터 이름과 SCOPE 절에서 원격 컴퓨터의 UNC 경로를 지정하여 로컬 인덱스 쿼리를 수행할 수 있습니다. FROM 및 SCOPE 절을 사용하는 원격 쿼리는 다음 예제에 나와 있습니다.

SELECT System.ItemName FROM MachineName.SystemIndex WHERE SCOPE='file://MachineName/<path>' 

여기에 제공된 예제에서는 SQL을 사용합니다.

구조적 쿼리 API 개요

구조화된 쿼리는 개별 속성에 대한 쿼리의 부울 조합으로 정보를 검색하는 기능을 제공합니다. 이 항목에서는 가장 중요한 구조화된 쿼리 API 및 메서드의 기능을 간략하게 설명합니다. 구조적 쿼리 API에 대한 참조 설명서는 쿼리 인터페이스를 참조하세요.

IQueryParser

IQueryParser::P arse 메서드는 사용자 입력 문자열을 구문 분석하고 IQuerySolution 형식으로 해석을 생성합니다. 해당 메서드의 pCustomProperties 매개 변수가 null이 아니면 IRichChunk 개체의 열거형입니다(인식된 각 사용자 지정 속성에 대해 하나씩). 다른 IQueryParser 메서드를 사용하면 애플리케이션이 다양한 유형의 명명된 엔터티에 대한 로캘, 스키마, 단어 분리기 및 처리기와 같은 여러 옵션을 설정할 수 있습니다. IQueryParser::GetSchemaProvider 는 로드된 스키마를 검색하기 위한 ISchemaProvider 인터페이스를 반환합니다.

IQuerySolution: IConditionFactory

IQuerySolution 인터페이스는 입력 문자열 구문 분석 결과에 대한 모든 정보를 제공합니다. IQuerySolutionIConditionFactory 인터페이스이기도 하므로 추가 조건 트리 노드를 만들 수 있습니다. IQuerySolution::GetQuery 메서드는 해석을 위한 조건 트리를 생성합니다. IQuerySolution::GetQuery 는 의미 체계 형식도 반환합니다.

IConditionFactory

IConditionFactory 는 조건 트리 노드를 만듭니다. IConditionFactory::MakeNotsimplify 매개 변수가 VARIANT_TRUE 경우 결과 ICondition이 간소화되며 부정 노드일 필요는 없습니다. IConditionFactory::MakeAndOrpSubConditions 매개 변수가 null이 아닌 경우 해당 매개 변수는 ICondition 개체의 열거형이어야 하며 하위 트리가 되어야 합니다. IConditionFactory::MakeLeaf는 지정된 속성 이름, 작업 및 값을 사용하여 리프 노드를 생성합니다. pValueType 매개 변수의 문자열은 스키마의 의미 체계 형식 이름이어야 합니다. expand 매개 변수가 VARIANT_TRUE 속성이 가상인 경우 결과 조건 트리는 일반적으로 속성을 정의된 구성 요소로 확장하여 발생하는 분리입니다. null이 아닌 경우 pPropertyNameTerm, pOperatorTermpValueTerm 매개 변수는 속성, 작업 및 값을 나타내는 용어를 식별해야 합니다.

ICondition: IPersistStream

ICondition 인터페이스는 조건 트리의 단일 노드입니다. 노드는 부정 노드, AND 노드 또는 리프 노드일 수 있습니다. 리프가 아닌 노드 ICondition::GetSubConditions 의 경우 하위 트리의 열거형을 반환합니다. 리프 노드의 경우 ICondition 의 다음 메서드는 다음 값을 반환합니다.

  • GetComparisonInfo 는 속성 이름, 작업 및 값을 반환합니다.
  • GetValueTypeIConditionFactory::MakeLeafpszValueType 매개 변수에 지정된 값의 의미 체계 형식을 반환합니다.
  • GetValueNormalization 은 값의 문자열 형식을 반환합니다. 값이 이미 문자열인 경우 이 양식은 대/소문자, 악센트 등과 관련하여 정규화됩니다.
  • GetInputTerms는 입력 문장에서 속성 이름, 작업 및 값을 생성한 부분에 대한 정보를 반환합니다.
  • Clone은 조건 트리의 전체 복사본을 반환합니다.

IRichChunk

IRichChunk 개체는 토큰 범위 및 문자열을 식별합니다. IRichChunk 는 시작 위치 및 길이로 식별되는 범위(일반적으로 토큰 범위)에 대한 정보를 나타내는 유틸리티 인터페이스입니다. 이 범위 정보에는 문자열 및/또는 VARIANT가 포함됩니다.

IConditionGenerator

IConditionGenerator 인터페이스는 명명된 엔터티 형식에 대한 인식 및 조건 트리 생성을 처리하기 위해 애플리케이션에서 제공됩니다. 조건 생성기는 IQueryParser::SetMultiOption을 통해 IQueryParser에 제공됩니다. IQueryParser는 현재 로드된 스키마에 대해 ISchemaProvider를 사용하여 IConditionGenerator::Initialize를 호출합니다. 이렇게 하면 IConditionGenerator 가 필요한 스키마 정보를 가져올 수 있습니다. 입력 문자열을 구문 분석할 때 IQueryParser는 입력 문자열에서 인식하는 명명된 엔터티의 발생을 보고할 수 있도록 각 IConditionGenerator의 IConditionGenerator::RecognizeNamedEntities 메서드를 호출합니다. IQueryParser 는 현재 로캘을 사용할 수 있으며 명명된 엔터티의 토큰 범위를 보고해야 하므로 입력의 토큰화를 사용해야 합니다.

IQueryParser가 리프 노드를 내보내려고 하고 값의 의미 체계 형식이 IConditionGenerator의 명명된 엔터티 형식과 일치하면 IQueryParser는 생성할 노드에 대한 정보를 사용하여 IConditionGenerator::GenerateforLeaf를 호출합니다. IConditionGenerator가 S_OK 반환하는 경우 조건 트리(리프 노드일 필요는 없음)를 반환하고 일반적으로 예방 조치로 생성될 대체 문자열 해석을 표시하지 않을지 여부를 IQueryParser에 알려야 합니다.

ITokenCollection

ITokenCollection::NumberOfTokens 메서드는 토큰 수를 반환합니다. ITokenCollection::GetTokeni번째 토큰에 대한 정보를 반환합니다. 시작 및 길이는 입력 문자열의 문자 위치입니다. 반환된 텍스트는 입력 문자열의 문자를 재정의하는 텍스트가 있는 경우에만 null이 아닌 텍스트가 됩니다. 예를 들어 해당 대시가 부정으로 해석되어야 하는 컨텍스트에 있을 때 NOT을 사용하여 입력 문자열의 대시를 재정의하는 데 사용됩니다.

INamedEntityCollector

IConditionGenerator 는 인식된 명명된 각 엔터티에 대해 INamedEntityCollector::Add 를 호출합니다. 범위는 토큰 범위입니다. 항상 시작Span 인 경우여야 합니다. beginActual<endActual ? endSpan. beginSpanendSpan 은 명명된 엔터티가 시작 및/또는 따옴표(명명된 엔터티에 포함됨)와 같은 의미상 중요하지 않은 토큰으로 끝나는 경우 beginActualendActual 과 다를 수 있습니다. 값은 문자열로 표현되어야 하며 이후에 IConditionGenerator::GenerateForLeaf 호출에 표시됩니다.

ISchemaProvider

ISchemaProvider 인터페이스를 사용하여 엔터티(형식) 및 관계(속성)에 대해 로드된 스키마를 찾아볼 수 있습니다. 개별 메서드의 작업은 다음과 같습니다.

  • 엔터티는 스키마에 있는 모든 엔터티(IEntity)의 열거형을 반환합니다.
  • RootEntity 는 스키마의 루트 엔터티를 반환합니다. 플랫 스키마의 경우 모든 IQuerySolution의 기본 형식이 반환됩니다.
  • GetEntity 는 이름으로 엔터티를 찾은 다음 스키마에 이러한 엔터티가 없으면 S_FALSE 반환합니다.
  • MetaDataIMetaData 인터페이스의 열거형을 반환합니다.

IEntity

IEntity 인터페이스는 이름이 있는 형식을 나타내고, 다른 형식(속성)에 대한 여러 명명된 관계를 가지며 기본 엔터티에서 파생되는 스키마 엔터티입니다. 개별 메서드의 작업은 다음과 같습니다.

  • IEntity::Relationships 는 이 형식의 나가는 각 관계에 대해 하나씩 IRelationship 개체의 열거형을 반환합니다. 엔터티의 나가는 각 관계에는 이름이 있습니다.
  • IEntity::GetRelationship 은 이름으로 관계를 찾고 이 엔터티에 대한 관계가 없으면 S_FALSE 반환합니다.
  • IEntity::MetaData 는 이 엔터티의 각 메타데이터 쌍에 대해 하나씩 IMetaData 인터페이스의 열거형을 반환합니다.
  • IEntity::D efaultPhrase 는 조건 트리의 AQS 또는 NQS 다시 작성을 용이하게 하는 기본 구를 반환합니다.

IRelationship

IRelationship 인터페이스는 원본과 대상이라는 두 엔터티 간의 관계를 나타냅니다. 개별 메서드의 작업은 다음과 같습니다.

  • IRelationship::IsReal 은 관계가 실제 관계인지 여부를 보고합니다. 예를 들어 엔터티 A가 엔터티 B에서 파생되고 해당 엔터티에서 R이라는 관계를 상속하는 경우 A는 여전히 R이라는 고유한 관계를 가질 수 있습니다. 그러나 관계 beween A와 R은 B의 대상 형식과 동일해야 하며, B와 관련된 메타데이터를 저장하는 것만이 존재합니다. B의 이러한 관계는 진짜가 아니라고합니다.
  • IRelationship::Medadata 는 이 엔터티의 각 메타데이터 쌍에 대해 하나씩 IMetaData 인터페이스의 열거형을 반환합니다.
  • IRelationship::D efaultPhrase 는 다시 작성에서 이 관계에 사용할 기본 구를 반환합니다. 각 관계에는 조건 트리의 AQS 또는 NQS 다시 생성을 용이하게 하기 위해 이를 나타내는 기본 구가 있습니다.

IMetaData

메타데이터는 엔터티, 관계 또는 전체 스키마와 각각 연결된 키-값 쌍입니다. 키가 반드시 고유한 것은 아니므로 메타데이터 컬렉션을 다중 맵으로 간주할 수 있습니다. IMetaData::GetData 는 metatdata 쌍의 키와 값을 검색하기 위해 호출됩니다.

쿼리 시나리오

다음 시나리오에서는 조건 트리 만들기 및 인덱스 쿼리와 같은 일반적인 쿼리 시나리오에서 Windows Search에서 구조적 쿼리 API를 사용하는 방법을 설명합니다.

조건 추출 및 쿼리 구문 분석

쿼리를 만들 때 해당 scope 검색할 위치를 시스템에 알려 정의됩니다. 이렇게 하면 검색 결과가 제한됩니다. scope 정의되면 필터가 적용되고 필터 집합이 반환됩니다. 검색 결과는 그래프와 유사한 리프 노드를 사용하여 조건 트리를 빌드하여 제한됩니다. 그런 다음 이러한 조건이 추출됩니다. 조건 트리는 리프 조건의 부울 조합(AND, OR, NOT)이며, 각 조건은 연산을 통해 속성을 값에 연결합니다. 리프 노드는 일부 작업을 통해 단일 속성에 대한 제한을 값으로 나타냅니다.

필터 제한에는 제한을 설명하는 논리 식이 필요합니다. 이 식을 정의하는 것은 조건 트리에서 단일 노드를 만드는 데 사용되는 ICondition 인터페이스로 시작됩니다. 다음 예제에는 조건이 하나만 있으므로 트리는 변경되지 않습니다.

    
    [
        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);
    };


둘 이상의 필터 조건이 있는 경우 AND 및 기타 부울 연산자를 사용하여 단일 트리를 달성합니다. AND-트리 및 OR-트리는 하위 트리의 결합 및 분리를 나타냅니다. NOT 트리는 단일 하위 트리의 부정을 나타냅니다. AQS는 부울 연산자를 사용하여 논리 식을 구현하는 텍스트 접근 방식을 제공하며 종종 더 간단합니다.

다음 예제에서는 조건 트리(ICondition)를 시각적 형식으로 변환합니다. IQueryParser 인터페이스를 사용하여 쿼리 파서는 ICondition을 RTF(서식 있는 텍스트) 쿼리 문자열로 변환합니다. IQueryParser::RestateToString 메서드는 쿼리 텍스트를 반환하고, IQueryParser::P arse 메서드는 IQuerySolution 인터페이스를 생성합니다. 다음 예제에서는 이 모든 작업을 수행하는 방법을 보여줍니다.

    [
        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의 기본 입력은 구문 분석할 사용자 입력 문자열이지만 애플리케이션은 입력에서 인식한 속성(애플리케이션별 구문)의 쿼리 파서에 알릴 수도 있습니다. IQueryParser::P arse의 출력은 해당 구문 분석 호출과 관련된 모든 정보를 제공하는 IQuerySolution입니다. 입력 문자열을 가져오는 방법, 입력 문자열이 토큰화된 방법, 구문 분석 오류 및 구문 분석된 쿼리를 ICondition으로 나타내는 조건 트리로 가져오는 메서드가 있습니다. 다음 예제에서는 ...

    [
        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);
    }    

    

이전 예제에서 IQuerySolution::GetQuery 는 원래 텍스트, 텍스트를 구성하는 토큰 또는 조건 트리를 포함하여 쿼리에 대한 정보를 가져올 수 있었습니다. 반환 가능한 쿼리 값의 예는 다음 표에 나와 있습니다.

반환된 쿼리 값의 예 설명
author:relja OR author:tyler IQueryParser::RestateToString이 반환하는 쿼리 텍스트
?author?, ?:?, ?relja?, ?OR?, ?author?, ?:?, ?tyler? 토큰의 분해
해결되지 않은 조건 트리 해결되지 않은 조건 트리

 

반환되는 초기 조건 트리가 해결되지 않았습니다. 해결되지 않은 조건 트리에서 날짜 및 시간 참조(예: date:yesterday)는 절대 시간으로 변환되지 않습니다. 또한 가상 속성은 확장되지 않습니다. 가상 속성은 여러 속성의 집계 역할을 하는 속성입니다.

예를 들어 쿼리 kind:email from:reljai 는 해결되지 않고 확인된 다음과 같은 조건 트리를 생성합니다. 확인되지 않은 조건 트리가 왼쪽에 있고 확인된 조건 트리가 오른쪽에 있습니다.

확인되지 않은 상태 트리 및 해결된 조건 트리

확인된 트리는 IConditionFactory::Resolve를 호출하여 가져올 수 있습니다. 그러나 SQRO_DONT_RESOLVE_DATETIME 전달하면 날짜와 시간이 해결되지 않습니다. 해결되지 않은 조건 트리에는 쿼리에 대한 정보가 포함되어 있으므로 해결되지 않은 조건 트리에 이점이 있습니다. 각 리프 노드는 IRichChunk 인터페이스를 사용할 때 속성, 연산자 및 값에 해당하는 IQuerySolution::GetLexicalData에서 반환된 토큰을 가리킵니다. 다음 예제에서는 ...

    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);
    }

인덱스 쿼리

인덱스를 쿼리하는 방법에는 여러 가지가 있습니다. 일부는 SQL을 기반으로 하고 다른 일부는 AQS를 기반으로 합니다. 인터페이스 쿼리를 사용하여 프로그래밍 방식으로 Windows Search 인덱 스를 쿼리할 수도 있습니다. 인덱스 쿼리와 관련된 세 가지 인터페이스는 ISearchQueryHelper, IRowsetPrioritizationIRowsetEvents입니다. 개념 정보는 프로그래밍 방식으로 인덱스 쿼리를 참조하세요.

ISearchQueryHelper 인터페이스를 사용하여 인덱스를 쿼리하는 구성 요소 또는 도우미 클래스를 개발할 수 있습니다. 이 인터페이스는 ISearchCatalogManager(및 ISearchCatalogManager2)에 대한 도우미 클래스로 구현되며 ISearchCatalogManager::GetQueryHelper를 호출하여 가져옵니다. 개념 정보는 ISearchQueryHelper를 사용하여 인덱스 쿼리를 참조하세요.

ISearchQueryHelper 를 사용하면 다음을 수행할 수 있습니다.

  • Windows Search 데이터베이스에 연결할 OLE DB 연결 문자열을 가져옵니다.
  • AQS 사용자 쿼리를 Windows Search SQL로 변환합니다.
  • SQL에서 표현할 수 있지만 AQS에서는 표현할 수 없는 쿼리 제한을 지정합니다.

인덱싱 우선 순위 지정 및 행 집합 이벤트는 Windows 7 이상에서 지원됩니다. IRowsetPrioritization을 사용하면 클라이언트가 특정 쿼리에 사용된 범위를 일반 우선 순위보다 높게 지정하도록 요청할 수 있는 우선 순위 스택이 있습니다. IRowsetEvents 는 새 항목 추가, 항목 삭제 및 항목 데이터 수정을 포함하여 행 집합의 항목에 대한 변경 내용에 대한 알림을 제공합니다. 행 집합 이벤트 알림을 사용하면 기존 쿼리에 대한 결과가 가능한 한 최신 상태로 유지됩니다. 개념 정보는 Windows 7의 인덱싱 우선 순위 지정 및 행 집합 이벤트를 참조하세요.

Windows Search의 인덱싱, 쿼리 및 알림

인덱스 포함 내용

Windows Search의 인덱싱 프로세스

Windows Search의 알림 프로세스

URL 서식 지정 요구 사항