윈도우 검색

개요

윈도우를 설치하자마자 윈도우 검색 기능은 사용자의 하드 드라이브의 파일을 위한 색인을 만들어낸다.
색인을 처음 만들 때는 여러 시간이 걸릴 수 있지만 이 작업은 한 번에 끝이 난다. 인덱싱 작업이 끝나면 윈도우 검색은 이 인덱스를 사용하여 실시간으로 컴퓨터의 모든 파일의 검색 결과를 더 빠르게 얻을 수 있다. 윈도우 검색은 파일 이름뿐 아니라 파일의 내용(적절한 핸들러를 통해 제공), 키워드, 설명, 파일 정보(메타데이터)까지도 검색을 수행한다. 이를테면 "안녕?"이라는 낱말을 컴퓨터에서 검색하면 "안녕?"이라는 제목의 음악 목록뿐 아니라 "안녕?"이라는 제목이나 내용이 포함된 전자메일이나 문서 또한 검색한다. 윈도우 검색은 또한 증분 검색 기능을 제공하여 사용자가 글자를 입력하는 대로 찾아 준다. 다시 말해, 검색 상자에 문자열을 입력하자마자 검색을 시작하며 입력한 문자열이 많을수록 검색 결과를 걸러내면서 보여 준다. 모든 문자를 입력하지 않아도 검색하려는 파일의 결과가 바로 눈 앞에 보인다는 것이 장점이다.
윈도우 검색은 어떠한 파일 포맷이든 추가할 수 있는 인터페이스의 집합인 IFilters를 지원한다. 파일 포맷이 연결된 IFilter를 가지면 IFilter는 해당 포맷의 파일로부터 문자열을 가져오는 데 사용하게 된다. 윈도우 검색은 워드 문서, 액셀 스프레드시트, 파워포인트 프레젠테이션, HTML 문서, 텍스트 파일, MP3, WMA 음악 파일, WMV, ASF, AVI 비디오, JPEG, BMP, PNG 그림을 비롯하여 기본적으로 공통 파일 종류의 핸들러를 포함하고 있다.
속성 핸들러(property handler)를 사용하여 파일 포맷의 메타데이터를 관리할 수 있다. 속성 핸들러는 윈도우 검색 엔진이 메타데이터를 인덱싱하기 위한 속성의 개요와, 속성에 대한 설명을 요구한다. 프로토콜 핸들러(protocol handler)는 저장되어 있는 특정한 데이터를 인덱싱하는 데 쓰인다. 이를테면 파일은 아웃룩 프로토콜 핸들러를 사용하는 아웃룩 기억자료, IE 검색 기록/캐시 프로토콜 핸들러를 사용하는 IE 캐시, 또 파일 시스템 프로토콜 핸들러를 사용하여 접근한다. 적절한 속성 핸들러를 설치하여 인덱스에 네트워크 공유를 추가할 수 있다.

고급 조회 구문

윈도우 검색은 고급 조회 구문(AQS)에 지정되어 있으며 단순 문자 검색뿐 아니라 고급 조회 명령도 제공한다. AQS는 검색 쿼리를 다듬는 데 쓰이는 특정한 키워드(이를테면 AND/OR/NOT 값)를 정의하고 파일 종류나 파일 메타데이터 기반의 필터를 지정한다. 일반 파일, 오프라인 파일 캐시, 이메일 기억 장소와 같은 특정 정보로부터 결과값을 제한하는 데에도 사용할 수 있다. 파일 종류의 특정한 연산자도 사용할 수 있다. 윈도우 데스크톱 검색은 또한 특수 문자 검색을 지원한다. 또, "GROUP BY"와 같은 SQL 등에서 볼 수 있는 연산자도 이에 포함한다.

프로그래밍 이용성

윈도우 검색의 색인은 관리(닷넷 프레임워크) 코드와 네이티브(Win32) 코드를 사용하여 접근할 수 있게 되어 있다. 네이티브 코드는 셸 인덱싱 서비스 OLE DB 제공자가 제공하는 데이터 소스 오브젝트(Data Source Object)를 사용하여 색인 카탈로그에 연결한다. 관리 코드는 색인 카탈로그 이름과 더불어 MSIDXS ADO.NET 제공자를 사용한다. 원격 컴퓨터의 카탈로그는 UNC 경로를 사용하여 지정할 수도 있다. 검색 기준은 SQL을 사용하여 지정되지만 일부 연산자는 제한을 받을 수 있다. SQL 쿼리는 수동으로 만들거나 ISearchQueryHelper 인터페이스 기능을 사용하여 만들 수 있다. 윈도우 검색은 AQS나 NQS 쿼리를 자체적인 SQL 대응물로 변환하기 위한 인터페이스 기능을 제공한다.
OLE DB/SQL API는 색인과 속성 기억 공간의 검색, 조회 기능을 제공한다. 변종 SQL을 사용하여 쿼리를 표현한다. (어느 저도 제한이 있는 일반적인 SQL) 결과는 OLE DB Rowsets로 반환된다. 조회를 실행할 때마다 조회가 사용한 색인의 일부는 일시적으로 캐시 처리되며 이에 따라 앞으로의 결과 필터링 검색 항목은 디스크에 접근하지 않아도 되므로 성능이 개선된다.
윈도우 검색은 Documents and Settings(윈도우 XP)나 Users(윈도우 비스타) 안의 \All Users\Application Data\Microsoft\Search\Data\Applications\Windows\ 폴더에 존재하는 Windows.edb 라는 이름의 내부 데이터베이스 파일에 인덱스를 저장한다. 데이터베이스 파일의 크기는 색인의 크기에 따라 달라질 수 있다. 이를테면 230,000 개의 파일의 인덱스는 800 메가바이트의 크기를 차지한다.
기본 카탈로그는 SystemIndex로 불리며 이름 패턴이 미리 정의된 색인 항목의 모든 속성을 담고 있다. 이를테면 시스템 안의 문서 이름과 위치는 각각 System. ItemName과 System. ItemURL라는 열을 가진 표로 표시된다.  SQL 쿼리는 직접 이러한 표를 가리키며 카탈로그를 인덱싱하고 MSIDXS 제공자를 사용하여 이들에 대한 조회를 실행한다. 검색 인덱스는 CollatorDSO 제공자를 사용하여 OLE DB를 통해 사용할 수도 있다. 그러나 OLE DB 제공자는 읽기 전용이며 SELECT와 GROUP ON이라는 SQL 구문만을 지원한다.
윈도우 검색은 또한 search-ms라는 응용 프로그램 프로토콜을 등록하며 URI로 검색 항목을 대표하는 데 사용한다. 검색에 쓰이는 매개변수와 필터는 AQS나 자연어 대응물인 NQS를 사용하여 URI 안에 인코딩된다. URI를 불러낼 때 윈도우 검색(프로토콜을 위한 핸들러로 등록되어 있음)은 검색 탐색기(Search Explorer)를 실행하여 검색 결과를 보여 준다. 윈도우 검색은 현재 프로토콜을 위한 기본 핸들러이지만 윈도우 비스타 서비스팩 1의 경우 서드파티 핸들러를 자체적으로 프로토콜 핸들러에 등록할 수 있게 되어 있다. 이로써 윈도우 비스타에서 베공하는 기본 검색 엔진뿐 아니라 사용자가 원하는 어떠한 검색 엔진이라도 검색을 위해 사용할 수 있다.
윈도우 검색 서비스는 Notifications API 구성 요소를 제공하여 응용 프로그램이 윈도우 검색 인덱싱 프로그램에 인덱싱이 필요한 항목을 push할 수 있게 도와 준다.
응용 프로그램들은 이 구성요소를 사용하여 색인에 필요한 항목의 URI를 공급하며 URI는 인덱싱 프로그램이 읽어내는 Gather Queue로 기록된다. 마이크로소프트 아웃룩 2007과 마이크로소프트 원노트 2007은 이 기능을 사용하여 항목을 인덱싱하며 윈도우 검색을 사용하여 응용 프로그램 안에서 검색을 할 수 있는 기능을 제공한다. Notifications API는 내부 USN Journal Notifier라는 윈도우 검색 구성 요소를 통해 사용되며 NTFS 볼륨에서 Change Journal를 감시하여 볼륨에서 변경된 파일의 역사를 추적한다. 파일이 윈도우 검색으로 인덱싱된 위치에 있고 FANCI (File Attribute Not Content Indexed, 색인되지 않는 파일 특성)라는 특성 집합을 가지고 있지 않다면 윈도우 검색 서비스는 Notification API를 통해 해당 경로를 통보 받는다.
윈도우 검색의 Configuration API는 감시가 필요한 URI의 루트와 같은 설정 구성을 지정하는 데 사용된다. 또, 프로토콜 핸들러를 등록하도록 도와 주는 API를 제공한다. (ISearchProtocol() 인터페이스, 속성 핸들러 (IPropertyStore() 인터페이스를 통해) 또는 IFilter 기능 (IFilter() 인터페이스를 통해). IFilter 기능은 문자열을 가져오는 기능만 제공하는 데 반해 IPropertyStore 는 속성을 읽는 것 뿐 아니라 수정하는 것까지 지원한다.

사용자 인터페이스

윈도우 데스크톱 검색 기능은 데스크바로 마운트된 작업 표시줄을 통해 노출된다. 떠 있는 틀로 표시되는 문자열 상자를 제공하여 검색 항목을 입력할 수 있게 되어 있다. 윈도우 탐색기 창으로도 통합되어 있다. 탐색기 창에 파일을 선택함으로써 파일을 만든 응용 프로그램을 열지 않아도 파일 미리보기가 오른쪽 창쪽에 표시된다.
웹 검색은 아까 언급한 두 가지 인터페이스로부터 시작할 수 있지만 기본 검색 엔진을 사용하여 항목을 검색하기 위해 탐색기를 열게 된다.
윈도우 데스크톱 검색 데스크바는 또한 다른 응용 프로그램을 열도록 설정할 수 있는 짧은 문자열인 "응용 프로그램의 별명"(alias)을 만드는 기능도 가지고 있다. 이 기능은 미리 정의된 문자열에 !라는 두문자를 사용하여 접근할 수 있다. 이를테면 "!calc"는 윈도우 계산기를 연다. 이 기능은 URL에 대한 바로 가기를 만드는 데 이용할 수 있으며 입력할 때 브라우저의 지정된 URL을 열게 된다. URL을 통해 변수가 지정된 정보를 내보내는 데 사용할 수도 있으며 다시 말해 검색 별명을 지정할 수 있다. 이를테면 "w 텍스트"는 위키백과에서 "텍스트"를 검색하도록 구성할 수 있다.

출시

윈도우 데스크톱 검색은 처음에 MSN 툴바의 일부인 MSN 데스크톱 검색(MSN Desktop Search)이라는 이름으로 출시되었다. 이것이 버전 2에서 윈도우 데스크톱 검색으로 다시 도입되었지만 여전히 MSN 툴바 제품군에 속해 있다.
윈도우 2000, XP, 서버 2003의 경우 가정 사용자용과 기업 사용자용으로 나뉜다. 두 버전의 유일한 차이점은 기업 사용자용 버전은 그룹 정책을 통해 구성할 수 있다는 점이다. 홈 에디션은 MSN 툴바에 포함되어 있지만 엔터프라이즈 버전은 독립적인 응용 프로그램으로 사용할 수 있다. 나중에 MSN 툴바가 윈도우 라이브 툴바에 가려져 중단되었고 윈도우 데스크톱 검색의 홈 에디션 버전도 마찬가지로 중단되었다.
윈도우 XP, 서버 2003의 경우 버전 3.0의 윈도우 데스크톱 검색이 윈도우 라이브 툴바에서 분리되어 독립 버전으로 제공되었다.
윈도우 데스크톱 검색 3.01은 이전 윈도우 비스타 사용자를 위한 것이므로 색인 프로그램이 사용자별 응용 프로그램으로서가 아닌 윈도우 서비스로서 추가되었다. 이로써 같은 색인뿐 아니라 단일 서비스도 모든 사용자들과 함께 공유할 수 있어서 성능이 개선된다.
윈도우 데스크톱 검색은 WSUS를 사용하며 업데이트하도록 설정했을 경우 윈도우 데스크톱 검색 3.01이 자동으로 윈도우에 설치되는 바람에 2007년 10월 25일에 논란이 휩싸였다. 그러나 마이크로소프트는 아직 그 상황에 대해 아무런 응답도 하지 않고 있다.

사용자 인터페이스

검색 기능은 시작 메뉴의 검색 표시줄과 윈도우 탐색기 창의 오른쪽 모퉁이 위에 노출되어 있다. 또, 열기/저장 대화상자에서도 찾을 수 있다. 시작 메뉴에서 검색할 때 결과는 최근에 사용한 프로그램을 덮으면서 시작 메뉴 그 자체에 나타난다. 시작메뉴에서 실행할 수 있는 이미지 이름이나 표시 이름을 검색함으로써 응용 프로그램을 실행할 수도 있다. 탐색기 창의 검색 표시줄에서 검색하면 현재 폴더의 내용을 검색 결과의 내용으로 바꾸어 준다. 섬네일 핸들러가 특정한 파일 형식에 등록되어 있다면 탐색기 창은 또한 검색 결과에서 섬네일을 표시할 수 있다. 또, 기본 응용 프로그램을 실행하지 않아도 응용 프로그램이 미리 보기 핸들러(Preview Handler)를 등록하였을 경우 미리 보기 창틀 안에 강화된 미리 보기를 사용할 수 있다. 게다가 파일 형식에 특화된 탐색과 같은 기능을 제공한다.(다음/이전 컨트롤을 사용하여 프레젠테이션을 탐색하거나 미디어 파일 내부를 찾는 등.) 미리 보기 핸들러는 특정한 종류의 편집을 허용한다. (이를테면 텍스트 발췌 부분을 강조한다든지) 제어판에서 창의 검색 표시줄은 제어판 옵션을 검색하는 데 사용할 수도 있다. 그러나 윈도우 데스크톱 검색과 달리 윈도우 검색은 별명을 만드는 것을 지원하지는 않는다.
또, 통합된 윈도우 탐색기 창인 검색 탐색기(Search Explorer)도 존재하며 검색에 사용된다. AQS 쿼리를 직접 하나 하나 만들지 않아도 위치, 파일 형식, 특정한 연산자를 비롯한 검색 변수를 지정할 수 있는 사용자 인터페이스를 제공한다. 윈도우 비스타 서비스팩 1의 경우 서드파티 응용 프로그램이 검색 탐색기를 기본 검색 인터페이스에 사용할 수 있게 되어 있어서 검색 표시줄을 가져오지 않아도 등록된 서드 파티 응용 프로그램을 실행할 수 있다. 그러나 윈도우 검색 인덱싱 프로그램은 이러한 작업을 한 뒤에도 꺼지지 않으며 검색 표시줄은 윈도우 검색 인덱스를 계속 사용한다.
윈도우 비스타의 일부인 윈도우 검색에서 이러한 쿼리를 검색 폴더(Search Folder), 저장된 검색(Saved Search)라 불리는 가상 폴더로 저장할 수 있다. 접근할 때 저장된 쿼리의 검색을 실행하고 폴더를 나열하면서 결과를 반환한다. 물리적으로 검색 폴더는 단순히 XML 파일이며 (.search-ms 확장자를 가짐) AQS든 NQS든 간에 관계 없이 검색 연산자를 비롯한 검색 쿼리를 담고 있다.
윈도우 비스타는 또한 쿼리 합성을 지원하여 저장된 결과(이를 검색 범위-scope-라고 함)를 다른 검색의 쿼리 문자열 안에 심을 수 있다. "검색 폴더"(Search Folder)는 RSS 파일 포맷을 통해 배포된다.
이는 또한 네트워크를 통해 접근할 수 있는 SearchMelt 자격으로 공유할 수 있다.
네트워크를 통해 SearchMelt에 접근하는 것은 일반적인 "검색 폴더"에서와 같이 검색 결과물을 가상으로 공유하고 있는 폴더로 사용할 수 있게 만들어 준다. 이러한 검색은 SearchMelt를 공유하는 컴퓨터에 수행할 수 있으며 네트워크로부터 접근할 수 있는 결과물만 반환한다. 그러나 기본적으로 검색 폴더는 로컬 용도로 제한된다. 공유하기 전에 이들은 원격 접근을 할 수 있게 설정해 두어야 한다. 마이크로소프트사는 SearchMelt Creator 도구를 제공하고 있다.

윈도우 검색 4.0

윈도우 검색 4.0은 윈도우 XP의 윈도우 데스크톱 검색 3.0, 윈도우 비스타의 빠른 검색이라는 윈도우 검색 플랫폼의 뒤를 잇는다.
처음에는 윈도우 라이브 검색 센터로서 연구 프로젝트로 개발되었으며 당시 코드이름은 Casino나 OneView였다. 다양한 지역에서뿐 아니라 윈도우 검색 인덱스, 윈도우 RSS 플랫폼 공통 피트 저장 공간, 마이크로소프트 익스체인지, 마이크로소프트 셰어포인트 인덱스를 비롯한 원격 인덱스에서 검색 항목을 모을 수 있다. 또 웹 서비스를 통해 검색을 수행할 수 있다. OpenSearch 규격을 사용하여 검색 결과를 웹 피드로 사용할 수 있게 도와 주며 통일된 인터페이스에서 결과를 표시한다.
나중에 마이크로소프트 윈도우 라이브 서비스의 일부가 아니라, 윈도우의 데스크톱 검색 플랫폼과 병합되어 그 뒤를 이을 것이라는 사실이 밝혀졌다.
윈도우 검색 4.0의 첫 베타 버전은 2008년 3월 27일에 출시되었다. 인덱싱 프로그램에 수많은 성능 개선이 있고 그룹 정책 통합, 원격 인덱싱 검색 관리, EFS 암호화 파일, 윈도우 비스타 스타일의 미리 보기 핸들러 지원과 같은 새로운 기능이 추가되었다. 현재 마이크로소프트 서치 서버와 같은 OpenSearch 규격을 사용하여 원격 웹 서비스를 담당하는 윈도우 라이브 검색 센터의 검색 관리 기능은 포함되어 있지 않다. 윈도우 검색 4.0은 윈도우 XP, 서버 2003, 비스타, 윈도우 7, 서버 2008, 홈 서버를 지원한다.
또, 윈도우 검색 4.0은 2008년 6월 3일에 출시되었다.