검색 속성 목록을 사용하여 문서 속성 검색

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이전에는 문서 속성의 내용을 문서 본문의 내용과 구분할 수 없었으므로 전체 문서에서 일반 검색에 대해 전체 텍스트 쿼리를 수행할 수 없었습니다. 그러나 이제 varbinary, varbinary(max) (FILESTREAM 포함) 또는 이미지 이진 데이터 열에서 지원되는 문서 형식에 대해 Author 및 Title과 같은 특정 속성에 대한 속성 범위 검색을 지원하도록 전체 텍스트 인덱스(전체 텍스트 인덱스)를 구성할 수 있습니다. 이 형식의 검색을 속성 검색이라고합니다.

연결된 필터 (IFilter)는 특정 유형의 문서에서 속성 검색이 가능한지 여부를 결정합니다. 일부 문서 형식의 경우 관련 IFilter는 문서 본문의 내용뿐만 아니라 해당 형식의 문서에 대해 정의된 속성의 일부 또는 전부를 추출합니다. 전체 텍스트 인덱싱 중에 IFilter에서 추출한 속성에 대해서만 속성 검색을 지원하도록 전체 텍스트 인덱스 구성을 수행할 수 있습니다. 여러 문서 속성을 추출하는 IFilter 중에는 Microsoft Office 문서 형식(예: .docx, .xlsx 및 .pptx)에 대한 IFilter가 있습니다. 반면 XML IFilter는 속성을 내보내지 않습니다.

검색 속성에서 전체 텍스트 검색이 작동하는 방식

내부 속성 ID

전체 텍스트 엔진은 등록된 각 속성에 내부 속성 ID를 임의로 할당합니다. 이 ID는 특정 검색 목록의 속성을 고유하게 식별하고 해당 검색 속성 목록과 관련이 있습니다. 따라서 속성이 여러 검색 속성 목록에 추가되면 목록마다 내부 속성 ID가 다를 수가 있습니다.

속성을 검색 목록에 등록하면 전체 텍스트 엔진이 속성에 내부 속성 ID 를 임의로 할당합니다. 내부 속성 ID는 해당 검색 속성 목록의 속성을 고유하게 식별하는 정수입니다.

다음 설명에서는 Title 및 Keywords라는 두 개의 속성을 지정하는 검색 속성 목록의 논리적 뷰를 보여 줍니다. 키워드의 속성 목록 이름은 "Tags"입니다. 이러한 속성은 GUID가 F29F85E0-4FF9-1068-AB91-08002B27B3D9인 동일한 속성 집합에 속합니다. 속성 정수 식별자는 Title의 경우 2이고 태그의 경우 5(키워드)입니다. 전체 텍스트 엔진은 각 속성을 검색 속성 목록에 고유한 내부 속성 ID로 임의 매핑합니다. Title 속성의 내부 속성 ID는 1이고 Tags 속성의 내부 속성 ID는 2입니다.

Mapping of search property list to internal table

내부 속성 ID는 속성의 속성 정수 식별자와 다를 수 있습니다. 지정된 속성이 여러 검색 속성 목록에 등록된 경우 각 검색 속성 목록에 대해 다른 내부 속성 ID가 할당될 수 있습니다. 예를 들어 내부 속성 ID가 한 검색 속성 목록에서는 4이고, 다른 목록에서는 1이고, 또 다른 목록에서는 3일 수 있습니다. 반대로 속성 정수 식별자는 속성에 내재된 것이므로 속성이 사용되는 위치에 관계없이 항상 동일합니다.

등록된 속성의 인덱싱

전체 텍스트 인덱스를 검색 속성 목록과 연결한 후 인덱스를 다시 채워야 속성별 검색 단어를 인덱싱할 수 있습니다. 전체 텍스트 인덱싱 중에 모든 속성의 콘텐츠는 다른 콘텐츠와 함께 전체 텍스트 인덱스에 저장됩니다. 그러나 등록된 속성에 있는 검색어를 인덱싱할 때 전체 텍스트 인덱서는 해당 내부 속성 ID도 용어와 함께 저장합니다. 반면 속성이 등록되지 않은 경우 전체 텍스트 인덱스는 문서 본문의 일부인 것처럼 저장되고 내부 속성 ID의 값은 0입니다.

다음 그림에서는 이전 그림에 표시된 검색 속성 목록과 연결된 전체 텍스트 인덱스에 검색 용어가 표시되는 방식에 대한 논리적 보기를 보여 줍니다. 예제 문서 문서 1에는 문서 본문뿐만 아니라 Title, Author 및 Keywords라는 세 가지 속성이 포함되어 있습니다. 검색 속성 목록에 지정된 속성 제목 및 키워드의 경우 검색 용어는 전체 텍스트 인덱스의 해당 내부 속성 ID와 연결됩니다. 반면 Author 속성의 내용은 문서 본문의 일부인 것처럼 인덱싱됩니다. 즉, 속성을 등록하면 속성에 저장되는 내용의 양에 따라 전체 텍스트 인덱스 크기가 어느 정도 커질 수 있습니다.

Full-text index that uses a search property list

Title 속성-"즐겨찾기", "자전거 타기" 및 "트레일"의 검색 용어는 이 인덱스의 Title에 할당된 내부 속성 ID(1)와 연결됩니다. Keywords 속성-"자전거" 및 "mountain"의 검색 용어는 이 인덱스에 대한 태그에 할당된 내부 속성 ID(2)와 연결됩니다. 문서 본문의 검색 용어 n Author 속성-"Jane" 및 "Doe" 및 검색 용어의 경우 내부 속성 ID는 0입니다. "biking"이라는 용어는 Title 속성, 키워드(태그) 속성 및 문서 본문에서 발생합니다. Title 또는 Keywords(Tags) 속성에서 "자전거 타기"를 검색하면 결과에 이 문서가 반환됩니다. "자전거 타기"에 대한 일반 전체 텍스트 쿼리는 인덱스가 속성 검색을 위해 구성되지 않은 것처럼 이 문서를 반환합니다. Author 속성에서 "biking"에 대한 속성 검색을 수행하면 이 문서가 반환되지 않습니다.

속성 범위 전체 텍스트 쿼리는 전체 텍스트 인덱스의 현재 검색 속성 목록에 등록된 내부 속성 ID를 사용합니다.

속성 검색 사용의 영향

하나 이상의 속성에서 검색을 지원하도록 전체 텍스트 인덱스를 구성하면 검색 속성 목록 및 각 속성의 내용에 지정한 속성 수에 따라 인덱스의 크기가 다소 증가합니다.

Microsoft Word, Excel 및 PowerPoint 문서의 일반적인 모음을 테스트할 때 일반적인 검색 속성을 인덱싱하도록 전체 텍스트 인덱스를 구성했습니다. 이러한 속성을 인덱싱하면 전체 텍스트 인덱스 크기가 약 5% 증가했습니다. 이러한 대략적인 크기 증가는 대부분의 문서 모음에서 일반적일 것으로 예상합니다. 그러나 궁극적으로 크기 증가는 전체 데이터의 양을 기준으로 지정된 문서 모음의 속성 데이터 양에 따라 달라집니다.

검색 속성 목록 만들기 및 속성 검색 사용

검색 속성 목록 만들기

Transact-SQL을 사용하여 검색 속성 목록을 만들려면

CREATE SEARCH PROPERTY LIST(Transact-SQL) 문을 사용하고 적어도 목록 이름을 제공합니다.

Management Studio에서 검색 속성 목록을 만들려면
  1. 개체 탐색기에서 서버를 확장합니다.

  2. 데이터베이스를 확장한 다음 검색 속성 목록을 만들려는 데이터베이스를 확장합니다.

  3. 스토리지를 확장하고 검색 속성 목록을 마우스 오른쪽 단추로 클릭합니다.

  4. 새 검색 속성 목록을 선택합니다.

  5. 속성 목록 이름을 지정합니다.

  6. 필요에 따라 다른 사용자를 속성 목록 소유자로 지정합니다.

  7. 다음 옵션 중 하나를 선택합니다.

    • 빈 검색 속성 목록 만들기

    • 기존 검색 속성 목록에서 만들기

    자세한 내용은 New Search Property List을 참조하세요.

  8. 확인을 선택합니다.

검색 속성 목록에 속성 추가

속성 검색을 수행하려면 검색 속성 목록 을 만들고 검색 가능한 속성으로 만들 하나 이상의 속성을 지정해야 합니다. 검색 속성 목록에 속성을 추가하면 해당 특정 목록에 대한 속성이 등록됩니다. 속성을 검색 속성 목록에 추가하려면 다음과 같은 값이 있어야 합니다.

  • 속성 집합 GUID

    각 검색 속성은 관련 속성 그룹을 포함하는 단일 속성 집합에 속합니다. 각 속성 집합은 GUID(Globally Unique Identifier)로 식별됩니다.

  • 속성 정수 식별자

    각 검색 속성에는 속성 집합 내에서 고유한 식별자가 있습니다. 지정된 속성에 대해 식별자는 정수 또는 문자열일 수 있지만 전체 텍스트 검색은 정수 식별자만 지원합니다.

  • 속성 이름

    사용자가 속성을 검색하기 위해 전체 텍스트 쿼리에서 지정할 이름입니다. 속성 이름은 내부에 공백을 포함할 수 있습니다. 최대 길이는 256자입니다.

    속성 이름은 다음 중 어느 것이든 될 수 있습니다.

    • System.Author 또는 System.Contact.HomeAddress와 같은 속성의 Windows 정식 이름입니다.

    • 사용자가 기억하기 쉬운 이름. 일부 속성은 "작성자" 또는 "집 주소"와 같이 잘 알려진 사용자 친화적인 이름과 연결되지만 사용자에게 가장 적합한 이름을 지정할 수 있습니다.

    참고 항목

    지정된 속성 집합 GUID와 속성 식별자의 조합은 지정된 검색 속성 목록에서 고유해야 합니다. 즉, 서로 다른 이름이나 설명을 사용하여 동일한 속성을 두 번 이상 추가할 수 없습니다.

  • 속성 설명(선택 사항)

    검색 속성 목록에 검색 속성을 추가할 때 선택적 설명을 제공할 수 있습니다. 예를 들어 이름만으로는 명확하지 않은 속성에 대한 정보를 제공하거나 속성의 속성 집합에 대해 설명할 수 있습니다.

검색 속성 목록에 대한 값을 가져오려면

검색 속성에 대한 Find 속성 집합 GUID 및 속성 정수 ID를 참조 하세요.

Transact-SQL을 사용하여 속성을 검색 속성 목록에 추가하려면

검색 속성에 대한 속성 집합 GUID 및 속성 정수 ID 찾기 문서에 설명된 방법 중 하나를 사용하여 얻은 값과 함께 ALTER SEARCH PROPERTY LIST(Transact-SQL) 문을 사용합니다.

다음 예제에서는 검색 속성 목록에 속성을 추가할 때 이러한 값을 사용하는 방법을 보여 줍니다.

ALTER SEARCH PROPERTY LIST DocumentTablePropertyList  
   ADD 'Title'  
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,   
      PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );  

Management Studio의 검색 속성 목록에 속성을 추가하려면

검색 속성 목록 속성 대화 상자를 사용하여 검색 속성을 추가하고 제거합니다. 개체 탐색기에서 연결된 데이터베이스의 스토리지 노드 아래에서 검색 속성 목록 을 찾을 수 있습니다.

검색 속성 목록을 전체 텍스트 인덱스와 연결

검색 속성 목록에 등록된 속성에서 속성 검색을 지원하려면 검색 속성 목록을 인덱스와 연결하고 인덱스 다시 채워야 합니다. 전체 텍스트 인덱스를 다시 채우면 등록된 각 속성에서 검색어에 대한 속성별 인덱스 항목이 만들어집니다.

전체 텍스트 인덱스가 이 검색 속성 목록에 연결되어 있는 한 전체 텍스트 쿼리는 CONTAINS 조건자의 PROPERTY 옵션을 사용하여 해당 검색 속성 목록에 등록된 속성을 검색합니다.

전체 텍스트 인덱스와 연결된 검색 속성 목록을 변경하는 경우 인덱스를 다시 작성하여 일관된 상태로 전환해야 합니다. 인덱스는 즉시 잘려 전체 채우기를 실행할 때까지 비어 있습니다. 검색 속성 목록을 변경하면 인덱스가 다시 작성되는 경우에 대한 자세한 내용은 ALTER FULLTEXT INDEX(Transact-SQL)"주의"를 참조하세요.

검색 속성 목록을 Transact-SQL과 전체 텍스트 인덱스와 연결하려면

절과 함께 SET SEARCH PROPERTY LIST = <property_list_name> ALTER FULLTEXT INDEX(Transact-SQL) 문을 사용합니다.

Management Studio와 전체 텍스트 인덱스와 검색 속성 목록을 연결하려면

전체 텍스트 인덱스 속성 대화 상자의 일반 페이지에서 검색 속성 목록값을 지정합니다.

CONTAINS를 사용하여 검색 속성 쿼리

속성 범위 전체 텍스트 쿼리에 대한 기본 CONTAINS 구문은 다음과 같습니다.

SELECT column_name FROM table_name  
  WHERE CONTAINS ( PROPERTY ( column_name, 'property_name' ), '<contains_search_condition>' )  

예를 들어 다음 쿼리는 데이터베이스 테이블의 열에서 Document 인덱싱된 속성을 Title검색합니다AdventureWorks.Production.Document 쿼리는 Title 속성에 Maintenance 또는 Repair

USE AdventureWorks2022;
GO  
SELECT Document FROM Production.Document  
  WHERE CONTAINS ( PROPERTY ( Document, 'Title' ), 'Maintenance OR Repair')  
GO  

이 예제에서는 문서의 IFilter가 해당 Title 속성을 추출하고, Title 속성이 검색 속성 목록에 추가되고, 검색 속성 목록이 전체 텍스트 인덱스와 연결되어 있다고 가정합니다.

검색 속성 목록 관리

검색 속성 목록 보기 및 변경

Transact-SQL을 사용하여 검색 속성 목록을 변경하려면

ALTER SEARCH PROPERTY LIST(Transact-SQL) 문을 사용하여 검색 속성을 추가하거나 제거합니다.

Management Studio에서 검색 속성 목록을 보고 변경하려면
  1. 개체 탐색기에서 서버를 확장합니다.

  2. 데이터베이스를 확장 다음 데이터베이스를 확장합니다.

  3. 스토리지를 확장합니다.

  4. 검색 속성 목록 을 확장하여 검색 속성 목록을 표시합니다.

  5. 속성 목록을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  6. 검색 속성 목록 편집기 대화 상자에서 속성 표를 사용하여 검색 속성을 추가하거나 제거합니다.

    1. 문서 속성을 제거하려면 속성 왼쪽의 행 머리글을 클릭하고 DEL 키를 누릅니다.

    2. 문서 속성을 추가하려면 목록 맨 아래에 있는 빈 행을 클릭하고 오른쪽에 *있는 새 속성의 값을 입력합니다.

      이러한 값에 대한 자세한 내용은 검색 속성 목록 편집기를 참조하십시오. Microsoft에서 정의한 속성에 대해 이러한 값을 가져오는 방법에 대한 자세한 내용은 검색 속성에 대한 속성 집합 GUID 및 속성 정수 ID를 참조하세요. ISV(독립 소프트웨어 공급업체)에서 정의한 속성에 대한 자세한 내용은 해당 공급업체의 설명서를 참조하세요.

  7. 확인을 선택합니다.

검색 속성 목록 삭제

목록이 전체 텍스트 인덱스와 연결되어 있는 동안에는 데이터베이스에서 속성 목록을 삭제할 수 없습니다.

Transact-SQL을 사용하여 검색 속성 목록을 삭제하려면

DROP SEARCH PROPERTY LIST(Transact-SQL) 문을 사용합니다.

Management Studio에서 검색 속성 목록을 삭제하려면
  1. 개체 탐색기에서 서버를 확장합니다.

  2. 데이터베이스를 확장 다음 데이터베이스를 확장합니다.

  3. 스토리지를 확장한 다음 검색 속성 목록 노드를 확장합니다.

  4. 삭제할 속성 목록을 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다.

  5. 확인을 선택합니다.

참고 항목

검색 속성의 속성 집합 GUID 및 속성 정수 ID찾기
검색 필터 구성 및 관리