Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / /

자체 관리형 배포에서 텍스트 인덱스의 기본 언어 지정하기

이 페이지의 내용

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

기본적으로 텍스트 인덱스의 default_languageenglish 입니다. 비영어 텍스트 검색 쿼리의 성능을 향상시키기 위해, 텍스트 인덱스와 연결된 다른 기본 언어를 지정할 수 있습니다.

인덱스된 데이터와 연결된 기본 언어는 접미사 형태소 분석 규칙을 결정합니다. 기본 언어는 또한 어떤 언어 특정 불용어(예시: 영어에서의 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_languagespanish 로 설정합니다.

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

돌아가기

와일드카드 생성