문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / / /

여러 언어가 포함된 컬렉션의 텍스트 인덱스 만들기

이 페이지의 내용

  • 시작하기 전에
  • 절차
  • 결과
  • 자세히 알아보기

텍스트 인덱스를 생성하여 여러 언어로 된 텍스트가 포함된 문서 또는 내장된 문서가 포함된 컬렉션에서 실행되는 텍스트 검색 쿼리의 성능을 개선할 수 있습니다.

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í."
}
}
)

다음 작업은 originaltranslation.quote 필드에 텍스트 인덱스를 생성합니다.

db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })

참고

영어는 인덱스의 기본 언어입니다. default_language 를 지정하지 않으면 쿼리에서 $language 매개변수를 사용하여 언어를 지정해야 합니다. 자세한 내용 은 텍스트 인덱스의 기본 언어 지정을 참조하세요.

결과 인덱스는 originaltranslation.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 필드가 포함되지 않은 문서의 경우 인덱스는 기본 언어인 영어를 사용합니다.

← 텍스트 인덱스에 대한 기본 언어 지정