참고
MongoDB Search 는 더 많은 언어 분석기에 대한 지원을 포함한 고급 전체 텍스트 역량을 제공합니다. 텍스트 인덱스 및 $text 연산자 대신 MongoDB Search 인덱스 와 $search 단계를 사용하는 것이 좋습니다.
기본값 으로 텍스트 인덱스의 default_language 는 english입니다. 영어가 아닌 $text 쿼리의 성능을 향상시키려면 텍스트 인덱스 와 연결된 다른 기본값 언어 지정할 수 있습니다.
인덱스된 데이터와 연결된 기본 언어는 접미사 형태소 분석 규칙을 결정합니다. 기본 언어는 또한 어떤 언어 특정 불용어(예시: 영어에서의 the, an, a, and)가 인덱싱되지 않는지를 결정합니다.
다른 언어 지정하려면 텍스트 인덱스 만들 때 default_language 옵션을 사용합니다. 텍스트 인덱싱에 사용할 수 있는 언어를 확인하려면 자체 관리형 배포서버의 $text 쿼리 언어를 참조하세요. 작업은 다음 프로토타입과 유사해야 합니다.
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 필드 에 대한 $text 쿼리를 지원합니다. 예시 들어, 다음 쿼리 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" } } )
자세히 알아보기
여러 언어로 된 텍스트가 포함된 컬렉션 에 대한 텍스트 인덱스 만들려면 자체 관리 배포서버에서 다국어 텍스트 인덱스 만들기를 참조하세요.
다른 텍스트 인덱스 속성에 학습 보려면 자체 관리형 배포서버의 텍스트 인덱스 속성을 참조하세요.