윈도우 검색
윈도우 검색(Windows Search)은 마이크로소프트사가 개발한 윈도우 운영 체제의 색인 데스크톱 검색 플랫폼이다. 윈도우 XP, 윈도우 서버 2003에서는 윈도우 데스크톱 검색(Windows Desktop Search, 줄여서 WDS)로 알려져 있다. 또, 윈도우 비스타, 윈도우 서버 2008의 경우 빠른 검색으로 알려져 있고 실현되지 않았던 카이로 프로젝트의 오브젝트 파일 시스템(Object File System) 기능의 잔재인 윈도우 인덱싱 서비스의 뒤를 잇는다. 윈도우 검색은 인덱싱 서비스와 견주어 다른 구조와 새로운 인덱싱 프로그램을 사용한다. 윈도우 XP의 경우 윈도우 데스크톱 검색은 추가 기능(애드온) 응용 프로그램으로 사용할 수 있다.
윈도우 검색은 윈도우 비스타의 인덱싱 검색과 윈도우 XP의 윈도우 데스크톱 검색 모두를 아우른다. 공통 구조와 인덱싱 기술을 공유할뿐 아니라 서로 API의 호환성을 지닌다.
윈도우를 설치하자마자 윈도우 검색 기능은 사용자의 하드 드라이브의 파일을 위한 색인을 만들어낸다.
색인을 처음 만들 때는 여러 시간이 걸릴 수 있지만 이 작업은 한 번에 끝이 난다. 인덱싱 작업이 끝나면 윈도우 검색은 이 인덱스를 사용하여 실시간으로 컴퓨터의 모든 파일의 검색 결과를 더 빠르게 얻을 수 있다. 윈도우 검색은 파일 이름뿐 아니라 파일의 내용(적절한 핸들러를 통해 제공), 키워드, 설명, 파일 정보(메타데이터)까지도 검색을 수행한다. 이를테면 "안녕?"이라는 낱말을 컴퓨터에서 검색하면 "안녕?"이라는 제목의 음악 목록뿐 아니라 "안녕?"이라는 제목이나 내용이 포함된 전자메일이나 문서 또한 검색한다. 윈도우 검색은 또한 증분 검색 기능을 제공하여 사용자가 글자를 입력하는 대로 찾아 준다. 다시 말해, 검색 상자에 문자열을 입력하자마자 검색을 시작하며 입력한 문자열이 많을수록 검색 결과를 걸러내면서 보여 준다. 모든 문자를 입력하지 않아도 검색하려는 파일의 결과가 바로 눈 앞에 보인다는 것이 장점이다.
윈도우 검색은 어떠한 파일 포맷이든 추가할 수 있는 인터페이스의 집합인 IFilters를 지원한다. 파일 포맷이 연결된 IFilter를 가지면 IFilter는 해당 포맷의 파일로부터 문자열을 가져오는 데 사용하게 된다. 윈도우 검색은 워드 문서, 액셀 스프레드시트, 파워포인트 프레젠테이션, HTML 문서, 텍스트 파일, MP3, WMA 음악 파일, WMV, ASF, AVI 비디오, JPEG, BMP, PNG 그림을 비롯하여 기본적으로 공통 파일 종류의 핸들러를 포함하고 있다.
속성 핸들러(property handler)를 사용하여 파일 포맷의 메타데이터를 관리할 수 있다. 속성 핸들러는 윈도우 검색 엔진이 메타데이터를 인덱싱하기 위한 속성의 개요와, 속성에 대한 설명을 요구한다. 프로토콜 핸들러(protocol handler)는 저장되어 있는 특정한 데이터를 인덱싱하는 데 쓰인다. 이를테면 파일은 아웃룩 프로토콜 핸들러를 사용하는 아웃룩 기억자료, IE 검색 기록/캐시 프로토콜 핸들러를 사용하는 IE 캐시, 또 파일 시스템 프로토콜 핸들러를 사용하여 접근한다. 적절한 속성 핸들러를 설치하여 인덱스에 네트워크 공유를 추가할 수 있다.
윈도우 검색은 윈도우 서비스로 추가되어 윈도우 검색 런타임과 API 기능을 제공하고 구성 요소를 제어하고 색인을 담당하는 중심 기능으로 동작한다. 윈도우 검색에서 가장 중요한 구성 요소는 인댁싱 프로그램으로, 파일 시스템을 주기적으로 훑고 지나가면서 데이터 색인을 만들고 관리한다. 세 개의 프로세스를 사용하여 이 과정을 수행한다:
인덱싱 프로그램은 "Gatherer"와 "Merger"라는 두 개의 구성요소를 가지고 있다. Gaterer는 적절한 프로토콜 핸들러를 불러와서 URI을 관리하는 기억 공간에 접근하는 데 필요한 URI의 목록과, 문서 문자열을 가져오기 위한 IFilter, 또 적절한 속성 핸들러 (메타데이터를 가져오기 위함)를 수신한다. 다른 실행 상태에서는 또다른 색인들이 만들어진다. Merger는 이러한 색인들을 주기적으로 병합한다. 인덱싱을 하는 동안 색인들은 일반적으로 메모리 안에서 관리되며 디스크 입출력을 줄이기 위해 병합 뒤에는 디스크에 내보낸다. 메타데이터는 ESE 데이터베이스 엔진을 통해 관리하는 데이터베이스인 속성 기억 공간에 저장된다. 문자열은 역색인을 사용하여 만든 사용자 정의 데이터베이스에 저장된다. 색인과 속성 기억 공간에서 갈라진 또다른 영속적인 자료 구조를 관리하며 이를 Gather Queue로 부른다. Gather Queue는 인덱싱에 필요한 URI 목록을 조회하는 FIFO 큐(queue)를 관리한다. Gather는 이 큐의 목록을 읽는다. 인댁싱 프로그램은 Resource Monitor라는 다른 구성 요소도 포함하고 있다. 이 구성 요소는 사용할 수 있는 리소스를 감시하고 인덱싱 프로그램을 제어한다. 세 가지 상태를 가진다:윈도우 검색은 고급 조회 구문(AQS)에 지정되어 있으며 단순 문자 검색뿐 아니라 고급 조회 명령도 제공한다. AQS는 검색 쿼리를 다듬는 데 쓰이는 특정한 키워드(이를테면 AND/OR/NOT 값)를 정의하고 파일 종류나 파일 메타데이터 기반의 필터를 지정한다. 일반 파일, 오프라인 파일 캐시, 이메일 기억 장소와 같은 특정 정보로부터 결과값을 제한하는 데에도 사용할 수 있다. 파일 종류의 특정한 연산자도 사용할 수 있다. 윈도우 데스크톱 검색은 또한 특수 문자 검색을 지원한다. 또, "GROUP BY"와 같은 SQL 등에서 볼 수 있는 연산자도 이에 포함한다.
윈도우 검색의 색인은 관리(닷넷 프레임워크) 코드와 네이티브(Win32) 코드를 사용하여 접근할 수 있게 되어 있다. 네이티브 코드는 셸 인덱싱 서비스 OLE DB 제공자가 제공하는 데이터 소스 오브젝트(Data Source Object)를 사용하여 색인 카탈로그에 연결한다. 관리 코드는 색인 카탈로그 이름과 더불어 MSIDXS ADO.NET 제공자를 사용한다. 원격 컴퓨터의 카탈로그는 UNC 경로를 사용하여 지정할 수도 있다. 검색 기준은 SQL을 사용하여 지정되지만 일부 연산자는 제한을 받을 수 있다. SQL 쿼리는 수동으로 만들거나 codice_1 인터페이스 기능을 사용하여 만들 수 있다. 윈도우 검색은 AQS나 NQS 쿼리를 자체적인 SQL 대응물로 변환하기 위한 인터페이스 기능을 제공한다.
OLE DB/SQL API는 색인과 속성 기억 공간의 검색, 조회 기능을 제공한다. 변종 SQL을 사용하여 쿼리를 표현한다. (어느 저도 제한이 있는 일반적인 SQL) 결과는 OLE DB Rowsets로 반환된다. 조회를 실행할 때마다 조회가 사용한 색인의 일부는 일시적으로 캐시 처리되며 이에 따라 앞으로의 결과 필터링 검색 항목은 디스크에 접근하지 않아도 되므로 성능이 개선된다.
윈도우 검색은 codice_2(윈도우 XP)나 codice_3(윈도우 비스타) 안의 codice_4 폴더에 존재하는 codice_5 라는 이름의 내부 데이터베이스 파일에 인덱스를 저장한다. 데이터베이스 파일의 크기는 색인의 크기에 따라 달라질 수 있다. 이를테면 230,000 개의 파일의 인덱스는 800 메가바이트의 크기를 차지한다.
기본 카탈로그는 SystemIndex로 불리며 이름 패턴이 미리 정의된 색인 항목의 모든 속성을 담고 있다. 이를테면 시스템 안의 문서 이름과 위치는 각각 "System. ItemName"과 "System. ItemURL"라는 열을 가진 표로 표시된다. SQL 쿼리는 직접 이러한 표를 가리키며 카탈로그를 인덱싱하고 "MSIDXS" 제공자를 사용하여 이들에 대한 조회를 실행한다. 검색 인덱스는 CollatorDSO 제공자를 사용하여 OLE DB를 통해 사용할 수도 있다. 그러나 OLE DB 제공자는 읽기 전용이며 SELECT와 GROUP ON이라는 SQL 구문만을 지원한다.
윈도우 검색은 또한 codice_6라는 응용 프로그램 프로토콜을 등록하며 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를 제공한다. (codice_7 인터페이스, 속성 핸들러 (codice_8 인터페이스를 통해) 또는 IFilter 기능 (codice_9 인터페이스를 통해). codice_10 기능은 문자열을 가져오는 기능만 제공하는 데 반해 codice_11 는 속성을 읽는 것 뿐 아니라 수정하는 것까지 지원한다.
윈도우 데스크톱 검색은 윈도우 XP, 윈도우 서버 2003의 윈도우 검색 기능이다. 특정한 고급 조회 구문(AQS)을 사용하는 증분 검색을 제공한다. 기본적으로 대부분의 공통 파일 포맷(문서, 오디오, 비디오, 마이크로소프트 아웃룩 이메일을 위한 프로토콜 핸들러 등)을 위한 수많은 IFilter가 포함되어 있다. 다른 프로토콜 핸들러와 IFilter는 필요하면 설치할 수 있다.
윈도우 데스크톱 검색 기능은 데스크바로 마운트된 작업 표시줄을 통해 노출된다. 떠 있는 틀로 표시되는 문자열 상자를 제공하여 검색 항목을 입력할 수 있게 되어 있다. 윈도우 탐색기 창으로도 통합되어 있다. 탐색기 창에 파일을 선택함으로써 파일을 만든 응용 프로그램을 열지 않아도 파일 미리보기가 오른쪽 창쪽에 표시된다.
웹 검색은 아까 언급한 두 가지 인터페이스로부터 시작할 수 있지만 기본 검색 엔진을 사용하여 항목을 검색하기 위해 탐색기를 열게 된다.
윈도우 데스크톱 검색 데스크바는 또한 다른 응용 프로그램을 열도록 설정할 수 있는 짧은 문자열인 "응용 프로그램의 별명"(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일에 논란이 휩싸였다. 그러나 마이크로소프트는 아직 그 상황에 대해 아무런 응답도 하지 않고 있다.
윈도우 검색은 윈도우 비스타, 서버 2008의 인덱싱 검색 플랫폼이며 API 호환과 더불어 윈도우 데스크톱 검색이 제공하는 최고의 기능을 전달한다. 기존의 윈도우 데스크톱 검색과 달리 인덱싱 영역뿐 아니라 인덱싱하지 않는 영역까지도 검색하는 것으로 알려져 있다. 검색 기능이 수행될 때 속성 핸들러와 IFilter를 화면 상단에 불러온다. 이로써 더 조리있게 검색 결과를 표시할 수 있지만 검색 속도가 느려진다는 단점이 있다. 윈도우 검색은 중점적인 관리를 위해 그룹 정책을 사용한다.
윈도우 검색은 네트워크 공유의 오프라인 캐시를 인덱싱하며 이뿐 아니라 기존의 윈도우 데스크톱 검색이 인덱싱하였던 파일 시스템, 마이크로소프트 아웃룩 전자메일 기억 공간, 마이크로소프트 원노트 기억 공간까지도 인덱싱한다. 윈도우 검색은 원격 인덱싱에 대한 조회를 지원하고 있다. 이는 네트워크 파일 공유를 사용하는 파일 서버가 윈도우 비스타나 윈도우 서버 2008에서 실행 중이라면 공유 중인 데이터의 어떠한 검색 결과도 서버의 색인을 통해 조회할 수 있고 그 결과를 사용자가 접근하지 못하는 파일을 걸러내면서 클라이언트 시스템에 보여 줄 수 있음을 뜻한다. 이러한 과정은 사용자에게 투명하게 보여 준다.
그러나 윈도우 데스크톱 검색과 달리 윈도우 검색 인덱싱 프로그램은 낮은 우선 순위로 입출력 기술을 수행하므로 낮은 순위로 동작한다. 그 결과 다른 프로세스가 프로세서 시간이나 입출력 대역을 요구할 때마다 인덱싱 프로그램을 먼저 점유할 수 있어서 인덱싱 프로그램이 백그라운드에서 실행하고 있을 경우 성능이 떨어지는 문제를 안게 된다.
윈도우 검색은 자연어 검색을 지원하므로 사용자는 "photo taken last week"(지난 주에 찍은 사진)나 "email sent from dave"(데이브가 보낸 전자 메일)와 같은 것들을 검색할 수 있다. 그러나 기본적으로 이 기능은 꺼져 있다. 자연어 검색은 Natural Query Syntax (NQS)의 쿼리를 표현하며 이는 AQS와 동등한 자연어이다.
검색 기능은 시작 메뉴의 검색 표시줄과 윈도우 탐색기 창의 오른쪽 모퉁이 위에 노출되어 있다. 또, 열기/저장 대화상자에서도 찾을 수 있다. 시작 메뉴에서 검색할 때 결과는 최근에 사용한 프로그램을 덮으면서 시작 메뉴 그 자체에 나타난다. 시작메뉴에서 실행할 수 있는 이미지 이름이나 표시 이름을 검색함으로써 응용 프로그램을 실행할 수도 있다. 탐색기 창의 검색 표시줄에서 검색하면 현재 폴더의 내용을 검색 결과의 내용으로 바꾸어 준다. 섬네일 핸들러가 특정한 파일 형식에 등록되어 있다면 탐색기 창은 또한 검색 결과에서 섬네일을 표시할 수 있다. 또, 기본 응용 프로그램을 실행하지 않아도 응용 프로그램이 미리 보기 핸들러(Preview Handler)를 등록하였을 경우 미리 보기 창틀 안에 강화된 미리 보기를 사용할 수 있다. 게다가 파일 형식에 특화된 탐색과 같은 기능을 제공한다.(다음/이전 컨트롤을 사용하여 프레젠테이션을 탐색하거나 미디어 파일 내부를 찾는 등.) 미리 보기 핸들러는 특정한 종류의 편집을 허용한다. (이를테면 텍스트 발췌 부분을 강조한다든지) 제어판에서 창의 검색 표시줄은 제어판 옵션을 검색하는 데 사용할 수도 있다. 그러나 윈도우 데스크톱 검색과 달리 윈도우 검색은 별명을 만드는 것을 지원하지는 않는다.
또, 통합된 윈도우 탐색기 창인 검색 탐색기(Search Explorer)도 존재하며 검색에 사용된다. AQS 쿼리를 직접 하나 하나 만들지 않아도 위치, 파일 형식, 특정한 연산자를 비롯한 검색 변수를 지정할 수 있는 사용자 인터페이스를 제공한다. 윈도우 비스타 서비스팩 1의 경우 서드파티 응용 프로그램이 검색 탐색기를 기본 검색 인터페이스에 사용할 수 있게 되어 있어서 검색 표시줄을 가져오지 않아도 등록된 서드 파티 응용 프로그램을 실행할 수 있다. 그러나 윈도우 검색 인덱싱 프로그램은 이러한 작업을 한 뒤에도 꺼지지 않으며 검색 표시줄은 윈도우 검색 인덱스를 계속 사용한다.
윈도우 비스타의 일부인 윈도우 검색에서 이러한 쿼리를 검색 폴더(Search Folder), 저장된 검색(Saved Search)라 불리는 가상 폴더로 저장할 수 있다. 접근할 때 저장된 쿼리의 검색을 실행하고 폴더를 나열하면서 결과를 반환한다. 물리적으로 검색 폴더는 단순히 XML 파일이며 (codice_12 확장자를 가짐) AQS든 NQS든 간에 관계 없이 검색 연산자를 비롯한 검색 쿼리를 담고 있다.
윈도우 비스타는 또한 쿼리 합성을 지원하여 저장된 결과(이를 검색 범위-scope-라고 함)를 다른 검색의 쿼리 문자열 안에 심을 수 있다. "검색 폴더"(Search Folder)는 RSS 파일 포맷을 통해 배포된다.
이는 또한 네트워크를 통해 접근할 수 있는 SearchMelt 자격으로 공유할 수 있다.
네트워크를 통해 SearchMelt에 접근하는 것은 일반적인 "검색 폴더"에서와 같이 검색 결과물을 가상으로 공유하고 있는 폴더로 사용할 수 있게 만들어 준다. 이러한 검색은 SearchMelt를 공유하는 컴퓨터에 수행할 수 있으며 네트워크로부터 접근할 수 있는 결과물만 반환한다. 그러나 기본적으로 검색 폴더는 로컬 용도로 제한된다. 공유하기 전에 이들은 원격 접근을 할 수 있게 설정해 두어야 한다. 마이크로소프트사는 SearchMelt Creator 도구를 제공하고 있다.
윈도우 검색 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일에 출시되었다.