Windows와 함께 제공되는 필터 처리기
Microsoft는 Windows Search를 사용하여 여러 표준 필터를 제공합니다. 클라이언트는 이러한 필터 처리기( IFilter 인터페이스의 구현)를 호출하여 문서에서 텍스트 및 속성을 추출합니다.
이 항목은 다음과 같이 구성됩니다.
Windows Search 구현 정보
Windows 7 이상에서는 관리 코드로 작성된 필터가 명시적으로 차단됩니다. 필터는 여러 추가 기능이 실행되는 프로세스의 잠재적 CLR 버전 관리 문제로 인해 네이티브 코드로 작성되어야 합니다.
Windows 7 및 10 구현
Windows 7 이상에서는 필터 처리기, 속성 처리기 또는 새 확장을 등록할 때 발생하는 새로운 동작이 있습니다. 새 속성 처리기 및/또는 필터 처리기가 설치되면 해당 확장이 있는 파일이 자동으로 다시 인덱싱됩니다.
Windows 7 이상에서는 해당 속성 처리기와 함께 필터 처리기를 설치하고 속성 처리기 앞에 필터 처리기를 등록하는 것이 좋습니다. 속성 처리기의 등록은 먼저 다시 시작하지 않고 이전에 인덱싱된 파일의 즉각적인 다시 인덱싱을 시작하고 콘텐츠 인덱싱을 위해 이전에 등록된 필터 처리기를 활용합니다.
해당 속성 처리기 없이 필터 처리기만 설치한 경우 인덱싱 서비스를 다시 시작하거나 시스템을 다시 시작한 후에 자동 다시 인덱싱이 발생합니다.
Windows 7과 관련된 속성 설명 플래그는 GETPROPERTYSTOREFLAGS, PROPDESC_COLUMNINDEX_TYPE 및 PROPDESC_SEARCHINFO_FLAGS 참조 topics 참조하세요.
Windows Vista 구현
Windows Vista 및 이전 버전에서는 ISV(독립 소프트웨어 공급업체)가 일치하는 URL의 다시 빌드 또는 다시 인덱싱을 명시적으로 호출하지 않는 한 IFilter 또는 속성 처리기를 설치해도 기존 항목의 다시 인덱싱이 시작되지 않습니다.
인덱싱 서비스와 같은 레거시 애플리케이션과 필터를 구현할 때 알아야 하는 Windows Search와 같은 최신 애플리케이션 간에는 두 가지 주요 차이점이 있습니다.
- IPersistStream 인터페이스를 사용합니다.
- 속성 처리기 사용.
먼저 Windows Vista 및 Windows Search 3.0 이상에서는 다음과 같은 이유로 IPersistStream 을 사용해야 합니다.
- 성능 및 향후 호환성을 보장합니다.
- 보안을 강화합니다. IPersistStream으로 구현된 필터는 필터가 실행되는 컨텍스트에 디스크 또는 네트워크를 통해 파일을 열 수 있는 권한이 필요하지 않으므로 더 안전합니다.
Windows Search는 IPersistStream만 사용하지만 이전 버전과의 호환성을 위해 IPersistFile 인터페이스 및/또는 IPersistStorage 인터페이스 구현을 필터에 포함할 수도 있습니다.
두 번째 주요 차이점은 Windows Vista 및 Windows Search 3.0 이상에는 속성 처리기를 사용하여 항목의 속성을 열거하는 새 속성 시스템이 있다는 것입니다.
그러나 다음을 위해 콘텐츠와 속성을 모두 처리하는 필터를 구현해야 하는 경우가 있습니다.
- 레거시 MSSearch 구현을 지원합니다.
- 링크를 트래버스합니다.
- 언어 정보를 보존합니다.
- 포함된 항목을 재귀적으로 필터링합니다.
이러한 상황에서는 속성 값에 액세스하기 위해 IFilter::GetValue 메서드를 포함하여 전체 필터 구현이 필요합니다.
레거시 구현
앞에서 설명한 대로 Windows Vista 및 Windows Search에는 항목의 콘텐츠와 별개인 항목의 속성을 캡슐화하는 새 속성 시스템이 포함되어 있습니다. 이 속성 시스템은 이전 버전의 Microsoft WDS(Windows Desktop Search) 2.x에 없습니다. 필터가 위에서 설명한 대로 다른 애플리케이션을 지원해야 하는 경우 콘텐츠와 속성을 모두 처리해야 할 수 있습니다.
호환되는 필터를 개발하는 방법에 대한 자세한 내용은 다음 topics, IFilter(레거시 애플리케이션의 경우) 및 필터 추가 기능 개발(레거시 애플리케이션용)을 참조하세요.
Windows 검색 필터
Microsoft는 Windows Search를 사용하여 여러 표준 필터를 제공합니다. IFilter DLL 내용은 다음 표에 요약되어 있습니다. 필터 처리기의 이름을 클릭하면 해당 IFilter 구현에 대한 설명으로 이동합니다.
필터 처리기 | 필터링된 파일 | IFilter DLL |
---|---|---|
MIME 필터 처리기 | MIME(다목적 인터넷 메일 확장) | mimefilt.dll |
HTML 필터 처리기 | HTML 3.0 이전 버전 | nlhtml.dll |
문서 필터 처리기 | Microsoft Word, Excel, PowerPoint | offfilt.dll |
일반 텍스트 필터 처리기 | 일반 텍스트 파일 - 기본 IFilter | query.dll |
이진 또는 Null 필터 처리기 | 이진 파일 - Null IFilter | query.dll |
MIME 필터 처리기
MIME 필터 처리기(mimefilt.dll)는 확장명 .eml, .mht 및 .mhtml을 사용하여 파일에서 텍스트 및 속성 정보를 추출합니다.
HTML 필터 처리기
HTML 필터 처리기(nlhtml.dll)는 Windows Search에서 인덱싱할 수 있도록 클래스 "htmlfiles"에서 텍스트 및 속성 정보를 추출합니다. IFilter와 파일 형식 간의 연결에 대한 설명은 필터 처리기 등록에서 "파일에 대한 IFilter DLL 찾기"를 참조하세요.
HTML 문서의 태그 기능을 사용하여 META
HTML IFilter에 특수 처리 요청을 전달할 수 있습니다.
META
태그는 다음 예제와 같이 태그 내에서 HEAD ... /HEAD
html 파일의 시작 부분에서 발생합니다.
<head>
<META NAME="DESCRIPTION"
CONTENT="This text appears on the results page as the document's summary.">
</head>
일부 HTML META
태그는 잘 알려진 속성 집합 및 속성 ID(PID(속성 식별자) 값에 자동으로 매핑되므로 이러한 속성에 대한 쿼리는 매핑된 콘텐츠를 검색합니다. 다음 표에는 몇 가지 예제가 나와 있습니다. 파일 형식에 사용할 수 있는 시스템 속성 목록은 사용자 지정 파일 형식에 대한 시스템 정의 속성을 참조하세요.
속성 예제 | 매핑 대상 |
---|---|
meta name="author" content="ruth" | 요약 정보 속성 집합의 author 속성입니다. |
meta name="subject" content="word processing" | 요약 정보 속성 집합의 주체 속성입니다. |
meta name="keywords" content="fonts, serif" | 요약 정보 속성 집합의 키워드(keyword) 속성입니다. |
meta name="ms.category" content="fiction" | 문서 요약 정보 속성 집합의 category 속성입니다. |
HTML IFilter 의 일부 기능은 다음 표에 나와 있습니다.
Task | 작업 | 예제 | |
---|---|---|---|
파일에서 특수 추상 만들기 | 태그를 META NAME="DESCRIPTION"... 사용하여 문서 추상으로 키워드(keyword) 다음 문자열을 CONTENT 사용하도록 IFilter에 지시합니다.
참고: |
|
|
개별 파일이 필터링되지 않도록 방지 |
meta name 파일에 태그를 추가합니다. |
|
|
파일의 언어 코드 설정(시스템에서 올바른 언어 단어 분리기 및 노이즈 단어 파일을 선택하도록 하기 위해) | 다음 meta name 태그를 파일에 추가합니다. 여기서 콘텐츠 필드는 적절한 언어 코드(문자로 또는 로캘 값을 사용하여)를 지정합니다. |
|
문서 필터 처리기
문서 필터 처리기(offilt.dll)는 Microsoft Office의 일부 문서 확장에 대한 파일을 필터링합니다. 예를 들어 확장명 .doc . mdb, .ppt 및 .xlt 파일이 포함됩니다.
일반 텍스트 필터 처리기
일반 텍스트 파일의 경우 Windows Search는 시스템 속성(예: 파일 이름)과 파일 내용을 모두 필터링하는 텍스트 필터 처리기를 사용합니다. 파일 형식에 레지스트리에 IFilter 연결이 없는 경우 Windows Search는 파일에 대한 Shell 속성만 인덱싱합니다. 그러나 사용자는 인덱싱 옵션 제어판의 고급 옵션을 사용하여 인덱스 속성 또는 인덱스 속성 및 파일 콘텐츠에 사용할 수 있습니다.
사용자가 연결된 IFilter가 없는 파일 형식에 대해 이 옵션을 선택하면 텍스트 필터 처리기가 파일의 콘텐츠를 추출하는 데 사용됩니다. 텍스트 필터 처리기는 문서 형식을 "이해"하지 않습니다. 파일의 내용을 필터링할 때 파일을 문자 시퀀스로 처리합니다. 파일의 시작 부분에 유니코드 바이트 순서 표시가 검사.
이진 또는 Null 필터 처리기
등록된 이진 파일이 발견되면 null 필터 처리기가 사용됩니다. null 필터 처리기는 시스템 속성만 검색합니다. 이진 파일의 내용은 필터링되지 않습니다. 시스템 속성의 예로 FileName, LastWriteTime, FileSize 및 Attributes가 있습니다.
추가 리소스
- GitHub에서 사용할 수 있는 IFilterSample 코드 샘플은 IFilter 인터페이스를 구현하기 위한 IFilter 기본 클래스를 만드는 방법을 보여 줍니다.
- 인덱싱 프로세스에 대한 개요 는 인덱싱 프로세스를 참조하세요.
- 파일 형식에 대한 개요는 파일 형식을 참조하세요.
- 파일 형식에 대한 파일 연결 특성을 쿼리하려면 PerceivedTypes, SystemFileAssociations 및 애플리케이션 등록을 참조하세요.