여러 언어가 포함된 컬렉션의 텍스트 인덱스 만들기
텍스트 인덱스를 생성하여 여러 언어로 된 텍스트가 포함된 문서 또는 내장된 문서가 포함된 컬렉션에서 실행되는 텍스트 검색 쿼리의 성능을 개선할 수 있습니다.
collection에 여러 언어로 된 문서 또는 내장된 문서가 포함된 경우 language
라는 필드를 포함하고 해당 문서의 언어를 필드 값으로 지정합니다. 텍스트 인덱싱에 사용할 수 있는 언어를 보려면 텍스트 검색 언어를 참조하세요.
여러 언어에 대한 텍스트 인덱싱을 지원하려면 삽입 작업이 다음 예제와 유사해야 합니다.
db.<collection>.insertOne( { <field>: <value>, language: <language> } )
시작하기 전에
language
필드가 포함된 다국어 문서가 포함된 quotes
컬렉션을 만듭니다.
db.quotes.insertMany( { _id: 1, language: "portuguese", original: "A sorte protege os audazes.", translation: [ { language: "english", quote: "Fortune favors the bold." }, { language: "spanish", quote: "La suerte protege a los audaces." } ] }, { _id: 2, language: "spanish", original: "Nada hay más surrealista que la realidad.", translation: [ { language: "english", quote: "There is nothing more surreal than reality." }, { language: "french", quote: "Il n'y a rien de plus surréaliste que la réalité." } ] }, { _id: 3, original: "Is this a dagger which I see before me?", translation: { language: "spanish", quote: "Es este un puñal que veo delante de mí." } } )
절차
다음 작업은 original
및 translation.quote
필드에 텍스트 인덱스를 생성합니다.
db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })
참고
영어는 인덱스의 기본 언어입니다. default_language 를 지정하지 않으면 쿼리에서 $language 매개변수를 사용하여 언어를 지정해야 합니다. 자세한 내용 은 텍스트 인덱스의 기본 언어 지정을 참조하세요.
결과
결과 인덱스는 original
및 translation.quote
필드를 포함하는 문서 및 내장된 문서에 대한 텍스트 검색 쿼리를 지원합니다. 텍스트 인덱스는 다양한 접미사 어간 처리 규칙을 따르며 language
필드의 값을 기준으로 각 언어에 특정한 불용어를 무시합니다.
예를 들어, 다음 쿼리는 french
단어 réalité
을 검색합니다.
db.quotes.find( { $text: { $search: "réalité" } } )
출력:
[ { _id: 2, language: 'spanish', original: 'Nada hay más surrealista que la realidad.', translation: [ { language: 'english', quote: 'There is nothing more surreal than reality.' }, { language: 'french', quote: "Il n'y a rien de plus surréaliste que la réalité." } ] } ]
language
필드를 포함하지 않는 내장된 문서의 경우,
바깥쪽 문서에
language
필드가 포함된 경우 인덱스는 내장된 문서에 해당 문서의 언어를 사용합니다.그렇지 않으면 인덱스는 내장된 문서에 기본 언어를 사용합니다.
language
필드가 포함되지 않은 문서의 경우 인덱스는 기본 언어인 영어를 사용합니다.
자세히 알아보기
language
이외의 필드에 텍스트 인덱스 언어 를 지정하려면 모든 필드를 사용하여 텍스트 인덱스 언어 지정을 참조하세요.텍스트 인덱스의 기본 언어를 지정하는 방법을 알아보려면 텍스트 인덱스의 기본 언어 지정을 참조 하세요.
다른 텍스트 인덱스 속성에 대해 알아보려면, 텍스트 인덱스 속성을 참조하세요.