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