자체 관리형 배포에서 텍스트 인덱스의 기본 언어 지정하기
기본적으로 텍스트 인덱스의 default_language
는 english
입니다. 비영어 텍스트 검색 쿼리의 성능을 향상시키기 위해, 텍스트 인덱스와 연결된 다른 기본 언어를 지정할 수 있습니다.
인덱스된 데이터와 연결된 기본 언어는 접미사 형태소 분석 규칙을 결정합니다. 기본 언어는 또한 어떤 언어 특정 불용어(예시: 영어에서의 the
, an
, a
, and
)가 인덱싱되지 않는지를 결정합니다.
다른 언어 를 지정하려면 텍스트 인덱스 를 만들 때 default_language
옵션을 사용합니다. 텍스트 인덱싱 에 사용할 수 있는 언어를 확인하려면 자체 관리 배포서버의 텍스트 검색 언어를 참조하세요. 작업은 다음 프로토타입과 유사해야 합니다.
db.<collection>.createIndex( { <field>: "text" }, { default_language: <language> } )
default_language
값을 none
으로 지정하면 텍스트 인덱스는 중단어(stop word)를 포함하여 필드에 있는 각 단어를 구문 분석하고 접미사 어간(stemming)은 무시합니다.
시작하기 전에
스페인어 텍스트 필드를 포함하는 다음 문서를 가진 quotes
컬렉션을 생성합니다:
db.quotes.insertMany( [ { _id: 1, quote : "La suerte protege a los audaces." }, { _id: 2, quote: "Nada hay más surrealista que la realidad." }, { _id: 3, quote: "Es este un puñal que veo delante de mí?" }, { _id: 4, quote: "Nunca dejes que la realidad te estropee una buena historia." } ] )
절차
다음 작업은 quote
필드에 텍스트 색인을 생성하고 default_language
를 spanish
로 설정합니다.
db.quotes.createIndex( { quote: "text" }, { default_language: "spanish" } )
결과
결과 인덱스는 스페인어 접미사 형태소 분석 규칙을 사용하여 quote
필드에 대한 텍스트 검색 쿼리를 지원합니다. 예를 들어, 다음 쿼리는 quote
필드에서 키워드 punal
을 검색합니다:
db.quotes.find( { $text: { $search: "punal" } } )
출력:
[ { _id: 3, quote: "Es este un puñal que veo delante de mí?" } ]
$search
값이 punal
로 설정되어 있더라도, 텍스트 인덱스는 방점 무시(diacritic insensitive)이므로 puñal
을 포함하는 문서를 반환합니다.
인덱스는 또한 언어 특정 불용어를 무시합니다. 예를 들어 _id: 2
를 가진 문서에 hay
라는 단어가 포함되어 있더라도 다음 쿼리는 문서를 반환하지 않습니다. hay
는 스페인어 불용어로 분류되므로 텍스트 인덱스에 포함되지 않습니다.
db.quotes.find( { $text: { $search: "hay" } } )
자세히 알아보기
여러 언어로 된 텍스트가 포함된 컬렉션 에 대한 텍스트 인덱스 를 만들려면 자체 관리 배포서버에서 여러 언어를 포함하는 컬렉션에 대한 텍스트 인덱스 만들기를 참조하세요.
다른 텍스트 인덱스 속성에 학습 보려면 자체 관리형 배포서버의 텍스트 인덱스 속성을 참조하세요.