Windows PowerShell을 사용한 CJK(중국어, 일본어 및 한국어) 관련 토큰화 작업(FAST Search Server 2010 for SharePoint)

 

적용 대상: FAST Search Server 2010

마지막으로 수정된 항목: 2015-03-09

FAST Search Server 2010 for SharePoint에서는 언어 토큰화하위 문자열 토큰화의 두 가지 방법을 사용하여 기본 토큰화에 영향을 줄 수 있습니다.

언어 토큰화

언어 토큰화에서는 텍스트 문자열이 언어별 규칙에 따라 개별 토큰으로 분할됩니다. 동아시아 언어의 경우 사용자 지정 사전을 만들어 토큰화에 영향을 줄 수 있습니다. 단어가 기술 용어나 사람 이름 또는 회사 이름인 경우 또는 기본 토큰화가 잘못되어서 FAST Search Server 2010 for SharePoint에서 제공된 시스템 사전에서 단어가 누락된 경우에는 필요에 따라 토큰화될 수 있도록 단어를 사용자 지정 사전에 추가할 수 있습니다.

하위 문자열 토큰화

하위 문자열 토큰화는 특히 회수율이 매우 중요한 응용 프로그램에 유용합니다. 하위 문자열 토큰화는 텍스트에서 모든 공백을 제거하고 이를 연속어(bigram)로 분할(두 문자 길이의 토큰으로 겹쳐짐)합니다. 예를 들어 "アメリカ" (America) 경우 다음과 같이 분할됩니다. ア,アメ,メリ,リカ (a, ame, meri, ca).

하위 문자열 토큰화는 회수율을 높여주지만 정밀도가 줄어들고 인덱스 크기가 매우 커집니다. 회수율 향상보다 인덱스 크기 감소가 더 중요한 경우에는 하위 문자열 토큰화를 사용하지 않아야 합니다. 정밀도 감소를 최소화하기 위해 하위 문자열 토큰화와 언어 토큰화를 조합하여 사용할 수 있습니다.

언어 토큰화 없이 하위 문자열 토큰화만 사용하는 경우 정밀도가 매우 낮아집니다. 일반적으로 언어로 토큰화된 인덱스의 적중도는 하위 문자열로 토큰화된 인덱스의 적중도보다 순위가 높게 나타나므로 두 토큰화 유형을 조합하면 정밀도와 회수율을 최적화할 수 있습니다.

이 문서의 내용

  • 동아시아 언어 단어 분리기를 위한 사용자 지정 사전 만들기(언어 토큰화)

  • 하위 문자열 토큰화 구성

  • 언어 토큰화 및 하위 문자열 토큰화의 조합 구성

동아시아 언어 단어 분리기를 위한 사용자 지정 사전 만들기(언어 토큰화)

  1. FAST Search Server 2010 for SharePoint가 설치된 컴퓨터에서 FASTSearchAdministrators 로컬 그룹의 구성원이어야 하는 최소 요구 사항을 충족하는지 확인합니다.

  2. 텍스트 편집기에서 새 파일을 엽니다.

  3. 다음 규칙에 따라 사용자 지정 사전에 포함하려는 단어를 입력합니다.

    • 첫 번째 줄은 #CUSTOMER_WB여야 합니다.

    • 항목의 첫 번째 문자로 # 문자를 사용하지 마십시오.

    • 항목에 공백을 사용하지 마십시오.

    • 복합 단어의 토큰 경계를 표시하려면 슬래시(/)를 사용합니다. 한국어 사용자 지정 사전에서는 항목을 복합 단어로 표시할 수 없습니다.

      예:

      • 영어: book/shelf/cover

      • 일본어/중국어: 朝鲜/民主/主義/人民/共和國

      • 태국어: กระทรวง/มหาด/ไทย

    • 다음 파일 이름을 사용합니다.

      언어 파일 이름

      일본어

      custom0011.lex

      한국어

      includeKOR.txt

      태국어

      custom001e.lex

      중국어(간체)

      custom0804.lex

      중국어(번체)

      custom0404.lex

  4. 파일 메뉴에서 다른 이름으로 저장을 클릭합니다.

  5. 파일 형식 목록에서 모든 파일을 선택합니다.

  6. 인코딩 목록에서 유니코드를 선택합니다.

  7. 각 서버에서 FAST Search Server 2010 for SharePoint 검색 또는 항목 처리가 수행되는 <FASTSearchInstallationFolder>\lib\nlg\ 폴더에 사용자 지정 사전을 저장합니다. 여기서 <FASTSearchInstallationFolder>는 FAST Search Server 2010 for SharePoint을 설치한 폴더의 경로(예: C:\FASTSearch)입니다.

  8. 시작 메뉴에서 모든 프로그램을 클릭합니다.

  9. Microsoft FAST Search Server 2010 for SharePoint 셸을 클릭합니다.

  10. Microsoft FAST Search Server 2010 for SharePoint 셸을 클릭합니다.

  11. Windows PowerShell 명령 프롬프트에서 다음 명령을 입력하여 항목 처리 및 쿼리 처리를 다시 시작합니다.

    psctrl reset
    nctrl restart qrserver
    
  12. 모든 콘텐츠를 다시 크롤링하여 인덱싱된 콘텐츠에 대한 사용자 지정을 설정합니다.

참고

사용자 지정 사전에서 단어는 언어에 따라 다르게 처리됩니다.
중국어, 일본어 및 태국어의 경우 사용자 지정 사전의 단어는 토큰화 중 절대적인 우선 순위가 부여됩니다. 사용자 지정 사전에서 단어가 발견된 경우 문서의 동일 단어는 사용자 지정 사전에 정의된 대로 토큰화됩니다.
한국어의 경우 사용자 지정 사전에 정의된 토큰화는 특정 토큰화의 가능성만 높여 줍니다.

하위 문자열 토큰화 구성

이 절차에 따라 언어 토큰화를 해제하고 하위 문자열 토큰화를 설정할 수 있습니다.

  1. FAST Search Server 2010 for SharePoint가 설치된 컴퓨터에서 FASTSearchAdministrators 로컬 그룹의 구성원이어야 하는 최소 요구 사항을 충족하는지 확인합니다.

  2. FAST Search Server 2010 for SharePoint 관리 서버에서 텍스트 편집기를 사용하여 <FASTSearchInstallationFolder> components\admin-services\web.config를 엽니다. <FASTSearchInstallationFolder>는 FAST Search Server 2010 for SharePoint가 설치된 폴더의 경로입니다(예: C:\FASTSearch). AllowIndexPurgeOnSchemaUpdate의 값을 yes로 설정하여 모든 항목을 자동으로 다시 인덱싱하도록 설정합니다.

  3. 파일을 저장합니다.

  4. 시작 메뉴에서 모든 프로그램을 클릭합니다.

  5. Microsoft FAST Search Server 2010 for SharePoint를 클릭합니다.

  6. Microsoft FAST Search Server 2010 for SharePoint 셸을 클릭합니다.

  7. Windows PowerShell 명령 프롬프트에 다음 명령을 입력합니다.

    $mp= Get-FASTSearchMetadataManagedProperty -name <ManagedPropertyName>
    

    여기서,

    • *<ManagedPropertyName>*은 하위 문자열 토큰화를 구성하려는 관리 속성의 이름(예: title)입니다.
  8. 관리 속성의 속성을 봅니다.

    $mp
    
    >> Name                                   :         Title
    >> Description                            :         The title of the document
    >> Type                                   :         Text
    >> Queryable                              :         True
    >> StemmingEnabled                        :         True
    >> RefinementEnabled                      :         False
    >> MergeCrawledPfopertiesAuthorityWeight  :         False
    >> SubstringEnabled                       :         False
    >> DeleteDisallowed                       :         True
    >> MappingDisallowed                      :         False
    >> MaxIndexSize                           :         1024
    >> MaxResultSize                          :         64
    >> DecimalPlaces                          :         3
    >> SortableType                           :         SortableDisabled
    >> SummaryType                            :         Dynamic   
    
  9. 형태소 분석을 사용하지 않습니다.

    $mp.StemmingEnabled=0
    
  10. 형태소 분석을 사용합니다.

    $mp.SubstringEnabled=1
    
  11. 관리 속성을 업데이트합니다.

    $mp.Update()
    
  12. 항목이 변경되었는지 확인합니다.

    $mp
    
    >> Name                                   :         Title
    >> Description                            :         The title of the document
    >> Type                                   :         Text
    >> Queryable                              :         True
    >> StemmingEnabled                        :         False
    >> RefinementEnabled                      :         False
    >> MergeCrawledPfopertiesAuthorityWeight  :         False
    >> SubstringEnabled                       :         True
    >> DeleteDisallowed                       :         True
    >> MappingDisallowed                      :         False
    >> MaxIndexSize                           :         1024
    >> MaxResultSize                          :         64
    >> DecimalPlaces                          :         3
    >> SortableType                           :         SortableDisabled
    >> SummaryType                            :         Dynamic   
    

    Update() 명령을 실행한 다음에는 하위 문자열 토큰화가 설정될 때까지 몇 분 정도 걸릴 수 있습니다. 문서를 공급하기 전에 몇 분 정도 기다리십시오.

  13. 모든 콘텐츠를 다시 크롤링합니다.

언어 토큰화 및 하위 문자열 토큰화의 조합 구성

두 가지 토큰화 모드를 조합하려면 두 개의 전체 텍스트 인덱스와 두 개의 관리 속성 집합을 만들어야 합니다. 하나의 인덱스/속성 쌍에는 하위 문자열 토큰화가 사용되고(SubstringEnabled=1) 다른 하나의 쌍에는 언어 토큰화가 사용됩니다(StemmingEnabled=1).

검색 결과에서 두 개의 관리 속성에 서로 다른 순위를 지정하려면 두 관리 속성을 서로 다른 전체 텍스트 인덱스에 매핑해야 합니다.

다음 절차 예에서는 하위 문자열 토큰화와 언어 토큰화를 하나의 관리 속성에 모두 적용하는 방법에 대해 설명합니다.

  1. FAST Search Server 2010 for SharePoint가 설치된 컴퓨터에서 FASTSearchAdministrators 로컬 그룹의 구성원이어야 하는 최소 요구 사항을 충족하는지 확인합니다.

  2. FAST Search Server 2010 for SharePoint 관리 서버에서 텍스트 편집기를 사용하여 <FASTSearchInstallationFolder>\components\admin-services\web.config를 엽니다. <FASTSearchInstallationFolder>는 FAST Search Server 2010 for SharePoint가 설치된 폴더의 경로입니다(예: C:\FASTSearch). AllowIndexPurgeOnSchemaUpdate의 값을 yes로 설정하여 모든 항목을 자동으로 다시 인덱싱하도록 설정합니다.

  3. 파일을 저장합니다.

  4. 시작 메뉴에서 모든 프로그램을 클릭합니다.

  5. Microsoft FAST Search Server 2010 for SharePoint를 클릭합니다.

  6. Microsoft FAST Search Server 2010 for SharePoint 셸을 클릭합니다.

  7. Windows PowerShell 명령 프롬프트에 다음 명령을 입력합니다.

    Get-FASTSearchMetadataFullTextIndexMapping -ManagedProperty (Get-FASTSearchMetadataManagedProperty -name <ManagedProperty>)
    
    >> ImportanceLevel:     :  7
    >> ManagedProperty:     :  Title
    >> FullTextIndex:       :  content
    

    여기서,

    • *<ManagedProperty>*는 언어 토큰화 및 하위 문자열 토큰화를 구성하려는 관리 속성의 이름(예: title)입니다.
  8. 위의 관리 속성과 동일한 콘텐츠를 포함하는 새 관리 속성을 만듭니다.

    $mpSubstring=New-FASTSearchMetadataManagedProperty -name <ManagedProperty>Substring -type 1
    

    여기서,

    • *<Managed_Property>*는 새 관리 속성을 만들기 위해 콘텐츠를 사용하려는 관리 속성(예: title)입니다.
  9. 새 관리 속성의 속성을 봅니다.

    $titleSubstring
    
    >> Name                                   :         titleSubstring
    >> Description                            :         
    >> Type                                   :         Text
    >> Queryable                              :         True
    >> StemmingEnabled                        :         False
    >> RefinementEnabled                      :         False
    >> MergeCrawledPfopertiesAuthorityWeight  :         False
    >> SubstringEnabled                       :         False
    >> DeleteDisallowed                       :         False
    >> MappingDisallowed                      :         False
    >> MaxIndexSize                           :         1024
    >> MaxResultSize                          :         64
    >> DecimalPlaces                          :         3
    >> SortableType                           :         SortableDisabled
    >> SummaryType                            :         Static   
    
  10. 새 관리 속성에 대해 언어 토큰화를 사용하지 않습니다.

    $mpSubstring.StemmingEnabled=0
    
  11. 새 관리 속성에 대해 하위 문자열 토큰화를 사용합니다.

    $mpSubstring.SubstringEnabled=1
    
  12. 새 관리 속성을 업데이트합니다.

    $mpSubstring.update()
    
  13. 두 관리 속성의 콘텐츠가 동일한지 확인하려면 첫 번째 관리 속성의 모든 크롤링된 속성을 새로 만든 관리 속성에 매핑합니다.

    Get-FASTSearchMetadataCrawledPropertyMapping -name <ManagedProperty>| ForEach-Object { New-FASTSearchMetadataCrawledPropertyMapping -managedproperty $mpSubstring -crawledproperty $_}
    

    여기서,

    • *<ManagedProperty>*는 새 관리 속성을 만들기 위해 사용된 관리 속성(예: title)입니다.
  14. 전체 텍스트 인덱스의 이름에 대해 소문자만 사용하여 새 전체 텍스트 인덱스를 만듭니다.

    $mpSubstringIndex= New-FASTSearchMetadataFullTextIndex -Name <NewFullTextIndex> -Description "Title Substring"
    

    여기서,

    • *<NewFullTextIndex>*는 새 전체 텍스트 인덱스의 이름입니다(예: titlesubstringindex).
  15. 새 전체 텍스트 인덱스를 봅니다.

    $mpSubstringIndex
    
    >> Name                :   titlesubstringindex
    >> Description         :   Title Substring
    >> StemmingEnabled:    :   True
    >> isDefault           :   False
    >> DeleteDisallowed:   :   False
    
  16. 새 전체 텍스트 인덱스에 대해 언어 토큰화를 사용하지 않습니다.

    $mpSubstringIndex.StemmingEnabled=0
    
  17. 새 전체 텍스트 인덱스를 업데이트합니다.

    $mpSubstringIndex.Update()
    
  18. 새 전체 텍스트 인덱스가 업데이트되었는지 확인합니다.

    $mpSubstringIndex
    
    >> Name                :   titlesubstringindex
    >> Description         :   Title Substring
    >> StemmingEnabled:    :   False
    >> isDefault           :   False
    >> DeleteDisallowed:   :   False
    
  19. 새로 만든 하위 문자열 사용 관리 속성을 새로 만든 하위 문자열 사용 전체 텍스트 인덱스에 매핑합니다.

    New-FASTSearchMetadataFullTextIndexMapping -ManagedProperty $<NewManagedProperty> -FullTextIndex $<NewFullTextIndex> -ImportanceLevel 1
    

    여기서,

    • *<NewManagedProperty>*는 새로 만든 관리 속성의 이름입니다(예; titleSubstring).

    • *<NewFullTextIndex>*는 새로 만든 전체 텍스트 인덱스의 이름입니다(예: titlesubstringindex).

  20. 두 인덱스를 모두 포함하는 새 순위 프로필을 만듭니다.

    $NewRankProfile=New-FASTSearchMetadataRankProfile -Name <NewRankProfile>
    

    여기서,

    • *<NewRankProfile>*은 새 순위 프로필의 이름입니다(예: DualRankProfile).
  21. 전체 텍스트 인덱스에 새로 만든 순위 프로필의 미리 정의된 순위 구성 요소가 포함되었는지 확인합니다.

    $DualRankProfile.GetFullTextIndexRanks()
    
    >> FullTextIndexReference    :  content
    >> ProximityWeight           :  50
    >> ContextWeight:            :  50
    

    기본 설치의 경우 content라는 전체 텍스트 인덱스에 대한 미리 정의된 순위 구성 요소가 하나만 있습니다.

  22. 아직 인덱스 순위가 없는 새로 만든 전체 텍스트 인덱스에 대한 인덱스 순위 구성 요소를 만듭니다.

    $mpSubstringIndex= get-FASTSearchMetadataFullTextIndex -Name <NewFullTextIndex>
    $DualRankProfile.CreateFullTextIndexRankComponent($<NewFullTextIndex>)
    

    여기서,

    • *<NewFullTextIndex>*는 새로 만든 전체 텍스트 인덱스의 이름입니다(예: titlesubstringindex).
  23. 모든 전체 텍스트 인덱스의 순위 프로필에 전체 텍스트 인덱스 순위 구성 요소가 있는지 확인합니다.

    $DualRankProfile.GetFullTextIndexRanks()
    
    >> FullTextIndexReference    :  content
    >> ProximityWeight           :  50
    >> ContextWeight:            :  50
    
    >> FullTextIndexReference    :  titlesubstringindex
    >> ProximityWeight           :  140
    >> ContextWeight:            :  50
    
  24. 언어로 토큰화된 단어(content)가 포함된 전체 텍스트는 하위 문자열로 토큰화된 단어(titlesubstringindex)가 포함된 전체 텍스트 인덱스보다 순위가 높습니다.

    언어로 토큰화된 단어가 포함된 전체 텍스트 인덱스의 순위를 하위 문자열로 토큰화된 단어가 포함된 전체 텍스트 인덱스보다 높게 설정하려면 하위 문자열이 사용된 전체 텍스트 인덱스의 컨텍스트 가중치를 언어로 토큰화된 전체 텍스트 인덱스의 컨텍스트 가중치보다 낮게 설정합니다.

    $ranks = $DualRankProfile.GetFullTextIndexRanks()
    $ranks|Where-Object -filterscript {$_.FullTextIndexReference.Name -eq "titlesubstringindex"}|ForEach-Object {$_.ContextWeight=<ContextWeight>; $_.Update()}
    

    여기서,

    • <ContextWeight>는 새 전체 텍스트 인덱스(titlesubstringindex)에 대해 기본 전체 텍스트 인덱스(content)에 대한 상대값으로 설정하려는 컨텍스트 가중치입니다(예: 30).
  25. 컨텍스트 가중치가 업데이트되었는지 확인합니다.

    $DualRankProfile.GetFullTextIndexRanks()
    
    >> FullTextIndexReference    :  content
    >> ProximityWeight           :  50
    >> ContextWeight:            :  50
    
    >> FullTextIndexReference    :  titlesubstringindex
    >> ProximityWeight           :  140
    >> ContextWeight:            :  30