참고
이 페이지에서는 자체 관리(비Atlas) 배포를 위한 텍스트 쿼리 기능에 대해 설명합니다. MongoDB 에서 호스팅되는 데이터의 경우, MongoDB 향상된 전체 텍스트 쿼리 솔루션인MongoDB Search와 벡터 검색 솔루션인Vector Search도 제공합니다.
텍스트 인덱스는 문자열 콘텐츠가 포함된 필드에 대한 텍스트 검색 쿼리 를 지원. 또한 Queryable Encryption 활성화된 컬렉션의 암호화됨 문자열 필드에 대한 집계 표현식도 지원 . 텍스트 인덱스는 문자열 콘텐츠 내에서 특정 단어나 문자열을 검색 때 성능을 향상시킵니다.
컬렉션 텍스트 인덱스 하나만 있을 수 있지만 해당 인덱스 여러 필드가 포함될 수 있습니다.
텍스트 인덱스를 만들려면 다음 프로토타입을 사용합니다:
db.<collection>.createIndex( { <field1>: "text", <field2>: "text", ... } )
$text 쿼리 지원
텍스트 인덱스는 온프레미스 배포에서 $text 쿼리 작업을 지원합니다. $text를 사용하려면 텍스트 인덱스를 만들어야 합니다.
$encStr 지원
텍스트 인덱스는 접두사, 접미사 또는 하위 문자열 쿼리가 활성화된 Queryable Encryption 컬렉션의 필드에 대한 집계 표현식 을 지원. $encStrNormalizedEq 표현식 사용하려면 텍스트 인덱스 필요합니다.
사용 사례
온라인 상점의 clothing 컬렉션 각 항목을 설명하는 텍스트 문자열이 포함된 description 필드 있습니다. "silk"로 만든 옷을 찾으려면 description 에 텍스트 인덱스 생성하고 "silk"에 대한 $text 쿼리 실행 . 검색 description에서 "silk" 를 언급하는 모든 문서를 반환합니다.
시작하기
텍스트 인덱스를 만들고 사용하는 방법을 학습 다음을 참조하세요.
세부 정보
이 섹션에서는 텍스트 인덱스 세부 정보에 대해 설명합니다.
복합 텍스트 인덱스
텍스트 인덱스 키 및 기타 키 유형이 있는 복합 인덱스 에서는 텍스트 인덱스 필드 만이 인덱스 문서 참조하는지 여부를 결정합니다. 다른 키는 문서 참조에 영향을 주지 않습니다.
지원되는 쿼리
텍스트 인덱스는 쿼리 포함할 수 없습니다.
sparse 속성
텍스트 인덱스는 항상 희박합니다. MongoDB sparse 텍스트 인덱스를 생성할 때 옵션을 무시합니다.
MongoDB 텍스트 인덱스 필드 없거나, null 값이 있거나, 배열이 빈 문서에 대해서는 텍스트 인덱스 항목 추가하지 않습니다.
스토리지 요구 사항 및 성능 비용
텍스트 인덱스의 저장 및 성능 특성은 다음과 같습니다.
텍스트 인덱스는 상당한 RAM 소모할 수 있습니다. 여기에는 각 문서 의 각 인덱스 필드 에 있는 고유한 어간 단어 각각에 대한 인덱스 항목 하나씩 포함되어 있습니다.
텍스트 인덱스 작성하는 것은 대규모 멀티키 인덱스 작성하는 것과 유사하지만 동일한 데이터에 대해 정렬된(스칼라) 인덱스 작성하는 것보다 시간이 오래 걸립니다.
큰 텍스트 인덱스를 구축할 때는 파일 설명자 제한을 충분히 확보하세요. 권장 설정을 참조하세요.
MongoDB 새 문서의 각 인덱스 필드 에 각 고유 어간 단어에 대한 인덱스 항목 추가해야 하기 때문에 텍스트 인덱스는 쓰기 (write) 성능에 영향 .
텍스트 인덱스는 여러 단어로 구성된 문자열이나 단어 근접성 정보가 아닌 개별 단어를 저장 . 전체 컬렉션 RAM 에 맞을 때 여러 단어가 포함된 쿼리가 더 빠르게 실행 .
자세히 알아보기
텍스트 인덱스에 학습 보려면 다음을 참조하세요.
텍스트 검색 예는
$text reference page를 참조하세요.집계 파이프라인의 샘플
$text작업은 자체 관리 배포서버의 집계 파이프라인에서 $text를 참조하세요.