문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

텍스트 인덱스

이 페이지의 내용

  • 텍스트 검색 지원
  • 사용 사례
  • 시작하기
  • 세부 정보
  • 복합 텍스트 인덱스
  • sparse 속성
  • 스토리지 요구 사항 및 성능 비용
  • 자세히 알아보기

참고

이 페이지에서는 자체 관리(비Atlas) 배포를 위한 텍스트 검색 기능에 대해 설명합니다. MongoDB Atlas에서 호스팅되는 데이터의 경우, MongoDB는 향상된 전체 텍스트 검색 솔루션인 Atlas Search를 제공합니다.

텍스트 인덱스는 문자열 콘텐츠가 포함된 필드에 대한 텍스트 검색 쿼리를 지원합니다. 텍스트 인덱스는 문자열 콘텐츠 내에서 특정 단어나 구를 검색할 때 성능을 향상시킵니다.

컬렉션에는 텍스트 인덱스가 하나만 있을 수 있지만 이 인덱스는 여러 필드를 포함할 수 있습니다.

일반적으로 쿼리되는 필드를 인덱싱하면 해당 쿼리를 처리할 가능성이 높아집니다. 포함된 쿼리는 문서를 검사하지 않고도 인덱스를 사용하여 완전히 충족할 수 있는 쿼리입니다. 이렇게 하면 쿼리 성능이 최적화됩니다.

텍스트 인덱스를 만들려면 다음 프로토타입을 사용합니다:

db.<collection>.createIndex(
{
<field1>: "text",
<field2>: "text",
...
}
)

텍스트 인덱스는 온프레미스 배포서버에서 $text 쿼리 작업을 지원합니다. 텍스트 검색을 수행하려면 텍스트 인덱스를 생성하고 $text 쿼리 연산자를 사용해야 합니다.

온라인 상점의 clothing 컬렉션에 있는 문서에는 각 항목을 설명하는 텍스트 문자열이 포함된 description 필드가 포함되어 있습니다. silk로 만든 옷을 찾으려면 description 필드에 텍스트 인덱스을 만들고 키워드 silk가 포함된 문서에 대한 텍스트 검색 쿼리를 실행합니다. 검색하면 description 필드에 silk가 언급된 모든 문서가 반환됩니다.

특정 사용 사례에서 텍스트 인덱스를 만들고 텍스트 인덱스를 사용하는 방법을 알아보려면 다음을 참조하세요:

이 섹션에서는 텍스트 인덱스에 대한 세부 정보를 설명합니다.

다른 유형의 키와 함께 텍스트 인덱스 키가 포함된 복합 인덱스의 경우, 텍스트 인덱스 필드만이 인덱스가 문서를 참조하는지 여부를 결정합니다. 다른 키는 인덱스가 문서를 참고 여부를 결정하지 않습니다.

텍스트 인덱스는 항상 희박합니다. 텍스트 인덱스를 만들 때 MongoDB는 sparse 옵션을 무시합니다.

기존 또는 새로 삽입된 문서에 텍스트 인덱스 필드가 없거나 null 또는 빈 배열인 경우 MongoDB는 문서에 대한 텍스트 인덱스 항목을 추가하지 않습니다.

텍스트 인덱스는 다음과 같은 스토리지 요구 사항과 성능 비용을 가집니다.

  • 텍스트 인덱스는 많은 양의 RAM을 차지할 수 있습니다. 이는 삽입된 각 문서의 각 인덱스 필드에 있는 고유한 어간 단어 각각에 대해 하나의 인덱스 항목을 포함합니다.

  • 텍스트 인덱스를 구축하는 것은 대규모 멀티키 인덱스를 구축하는 것과 비슷하지만, 동일한 데이터에 대해 단순 정렬(스칼라) 인덱스를 구축하는 것보다 시간이 오래 걸립니다.

  • 많은 양의 RAM을 차지하는 텍스트 인덱스를 작성할 때 열린 파일 디스크립터에 대한 제한이 충분히 높은지 확인하십시오. 권장 설정을 참조하십시오.

  • MongoDB는 각 새 소스 문서의 각 인덱스 필드에 각각의 고유한 어간 단어에 대한 인덱스 항목을 추가해야 하기 때문에 텍스트 인덱스는 쓰기 성능에 영향을 미칩니다.

  • 텍스트 인덱스는 텍스트 문자열의 개별 단어를 저장합니다. 문구나 문서 내 단어의 근접성에 대한 정보는 저장하지 않습니다. 결과적으로, 전체 컬렉션이 RAM에 맞을 때 여러 단어를 지정하는 쿼리가 더 빠르게 실행됩니다.

← 멀티키 인덱스 바운드