Microsoft는 Windows Search를 사용하여 여러 표준 필터를 제공합니다. 클라이언트는 이러한 필터 처리기(IFilter 인터페이스의 구현)를 호출하여 문서에서 텍스트 및 속성을 추출합니다.
이 항목은 다음과 같이 구성됩니다.
- windows Search 구현 정보
- Windows 7 및 10 구현
- windows Vista 구현
- 레거시 구현
- Windows 검색 필터
- MIME 필터 처리기
- HTML 필터 처리기
- 문서 필터 처리기
- 일반 텍스트 필터 처리기
- 이진 또는 Null 필터 처리기
- 추가 리소스
- 관련 항목
Windows Search 구현 정보
Windows 7 이상에서는 관리 코드로 작성된 필터가 명시적으로 차단됩니다. 여러 추가 기능이 실행되는 프로세스의 잠재적 CLR 버전 관리 문제로 인해 필터를 네이티브 코드로 작성해야 합니다.
Windows 7 및 10 구현
Windows 7 이상에서는 필터 처리기, 속성 처리기 또는 새 확장을 등록할 때 발생하는 새로운 동작이 있습니다. 새 속성 처리기 및/또는 필터 처리기가 설치되면 해당 확장이 있는 파일이 자동으로 다시 인덱싱됩니다.
Windows 7 이상에서는 해당 속성 처리기와 함께 필터 처리기를 설치하고 속성 처리기 앞에 필터 처리기를 등록하는 것이 좋습니다. 속성 처리기의 등록은 먼저 다시 시작하지 않고 이전에 인덱싱된 파일의 즉시 다시 인덱싱을 시작하고 콘텐츠 인덱싱을 위해 이전에 등록된 필터 처리기를 활용합니다.
해당 속성 처리기 없이 필터 처리기만 설치한 경우 인덱싱 서비스를 다시 시작하거나 시스템을 다시 시작한 후에 자동 다시 인덱싱이 발생합니다.
Windows 7과 관련된 속성 설명 플래그는 다음 참조 항목을 참조하세요. GETPROPERTYSTOREFLAGS, PROPDESC_COLUMNINDEX_TYPE 및 PROPDESC_SEARCHINFO_FLAGS.
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에는 항목의 콘텐츠와 별개인 항목의 속성을 캡슐화하는 새 속성 시스템이 포함되어 있습니다. 이 속성 시스템은 이전 버전의 WDS(Microsoft Windows Desktop Search) 2.x에 없습니다. 위에서 설명한 대로 필터가 다른 애플리케이션을 지원해야 하는 경우 콘텐츠와 속성을 모두 처리해야 할 수 있습니다.
호환되는 필터를 개발하는 방법에 대한 자세한 내용은 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(속성 식별자)) 값에 자동으로 매핑되므로 이러한 속성에 대한 쿼리는 매핑된 콘텐츠를 검색합니다. 다음 표에는 몇 가지 예가 나와 있습니다. 파일 형식에 사용할 수 있는 시스템 속성 목록은 사용자 지정 파일 형식 대한System-Defined 속성을 참조하세요.
| 속성 예제 | 매핑됨 |
|---|---|
| meta name="author" content="ruth" | Summary Information 속성 집합의 author 속성입니다. |
| meta name="subject" content="word processing" | 요약 정보 속성 집합의 주체 속성입니다. |
| meta name="keywords" content="fonts, serif" | Summary Information 속성 집합의 키워드 속성입니다. |
| meta name="ms.category" content="fiction" | 문서 요약 정보 속성 집합의 범주 속성입니다. |
HTML IFilter 일부 기능은 다음 표에 나와 있습니다.
| 과업 | 행동 | 본보기 | |
|---|---|---|---|
| 파일에서 특수 추상화 만들기 |
META NAME="DESCRIPTION"... 태그를 사용하여 IFilter 문서 추상으로 CONTENT 키워드 다음의 문자열을 사용하도록 지시합니다.
참고: |
|
|
| 개별 파일이 필터링되지 않도록 방지 | 파일에 meta name 태그를 추가합니다. |
|
|
| 파일의 언어 코드 설정(시스템에서 올바른 언어 단어 분리기 및 노이즈 단어 파일을 선택하도록 하기 위해) | 다음 meta name 태그를 파일에 추가합니다. 여기서 콘텐츠 필드는 문자 또는 로캘 값을 사용하여 적절한 언어 코드를 지정합니다. |
|
문서 필터 처리기
문서 필터 처리기(offilt.dll)는 Microsoft Office의 일부 문서 확장에 대한 파일을 필터링합니다. 예를 들어 확장 .doc, .mdb, .ppt및 .xlt가 있는 파일이 포함됩니다.
일반 텍스트 필터 처리기
일반 텍스트 파일의 경우 Windows Search는 시스템 속성(예: 파일 이름)과 파일 내용을 모두 필터링하는 텍스트 필터 처리기를 사용합니다. 파일 형식에 레지스트리에 IFilter 연결이 없는 경우 Windows Search는 파일의 셸 속성만 인덱싱합니다. 그러나 사용자는 인덱싱 옵션 제어판의 고급 옵션 사용하여 인덱스 속성 인덱스 속성 및 파일 내용 수 있습니다.
고급 옵션 대화 상자
screen shot showing the advanced options dialog box보여 주는스크린샷
연결된 IFilter없는 파일 형식에 대해 이 옵션을 선택하는 경우 텍스트 필터 처리기를 사용하여 파일의 콘텐츠를 추출합니다. 텍스트 필터 처리기는 문서 형식을 "이해"하지 않습니다. 파일의 내용을 필터링할 때 파일을 문자 시퀀스로 처리합니다. 파일의 시작 부분에서 유니코드 바이트 순서 표시를 확인합니다.
이진 또는 null 필터 처리기
등록된 이진 파일이 발견되면 null 필터 처리기가 사용됩니다. null 필터 처리기는 시스템 속성만 검색합니다. 이진 파일의 내용은 필터링되지 않습니다. 시스템 속성의 예로는 FileName , LastWriteTime, FileSize및 특성있습니다.
추가 리소스
- GitHub사용할 수 있는 IFilterSample 코드 샘플은 IFilter 인터페이스를 구현하기 위한 IFilter 기본 클래스를 만드는 방법을 보여 줍니다.
- 인덱싱 프로세스에 대한 개요는 인덱싱 프로세스 참조하세요.
- 파일 형식에 대한 개요는 파일 형식참조하세요.
- 파일 형식에 대한 파일 연결 특성을 쿼리하려면 PerceivedTypes, SystemFileAssociations 및 애플리케이션 등록참조하세요.
관련 항목
필터 처리기 개발
Windows Search 필터 처리기 정보
Windows Search 필터 처리기를 만들기 위한 모범 사례
필터 처리기 속성을 반환하는
Windows Search 필터 처리기 구현