Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

자체 관리형 배포서버에서 스캔되는 텍스트 인덱스 항목 제한

참고

MongoDB 향상된 전체 텍스트 검색 솔루션인 MongoDB Search와 벡터 검색 솔루션인 MongoDB Vector Search를 제공합니다. 텍스트 인덱스 대신 MongoDB Search 인덱스 또는 MongoDB Vector Search 인덱스 를 사용하는 것이 좋습니다.

대규모 데이터 세트에서 $text 쿼리를 실행 경우 단일 필드 텍스트 인덱스 많은 수의 항목을 스캔하여 결과를 반환할 수 있으며, 이로 인해 쿼리 속도가 느려질 수 있습니다.

쿼리 성능을 향상시키려면 복합 텍스트 인덱스 만들고 $text 쿼리에 동등성 매치 포함할 수 있습니다. 복합 인덱스 동등성 매치 에 사용된 필드 포함되어 있으면 인덱스 더 적은 수의 항목을 스캔하고 결과를 더 빠르게 반환합니다.

이 예시 에서 저장 관리자는 이러한 문서가 포함된 inventory 컬렉션 을 쿼리합니다.

db.inventory.insertMany( [
{ _id: 1, department: "tech", description: "lime green computer" },
{ _id: 2, department: "tech", description: "wireless red mouse" },
{ _id: 3, department: "kitchen", description: "green placemat" },
{ _id: 4, department: "kitchen", description: "red peeler" },
{ _id: 5, department: "food", description: "green apple" },
{ _id: 6, department: "food", description: "red potato" }
] )

관리자는 특정 부서 내의 항목에 대해 $text 쿼리를 수행합니다.

departmentdescription 필드의 복합 텍스트 인덱스는 스캔한 인덱스 키를 지정된 department 내의 문서로만 제한합니다. 복합 텍스트 인덱스는 description 필드의 단일 필드 텍스트 인덱스에 비해 향상된 성능을 제공합니다.

다음 필드를 포함하는 inventory 컬렉션에 복합 인덱스를 생성합니다.

  • department 필드의 오름차순 또는 내림차순 인덱스 키

  • description 필드의 text 인덱스 키

db.inventory.createIndex(
{
department: 1,
description: "text"
}
)

복합 인덱스 만든 후에는 $text 쿼리가 department 필드 에 지정된 동등 조건과 일치하는 문서만 스캔합니다.

예를 들어, 다음 쿼리는 description 필드에 green 문자열이 포함된 departmentkitchen이 동일한 문서를 스캔합니다.

db.inventory.find( { department: "kitchen", $text: { $search: "green" } } )

출력:

[ { _id: 3, department: 'kitchen', description: 'green placemat' } ]

쿼리를 반환하기 위해 스캔된 문서 수를 확인하려면 쿼리의 executionStats를 참조하세요.

db.inventory.find(
{
department: "kitchen", $text: { $search: "green" }
}
).explain("executionStats")

검사한 인덱스 키의 수는 totalKeysExamined 필드에 표시됩니다. 더 많은 인덱스 키를 검사하는 쿼리는 일반적으로 완료하는 데 시간이 더 오래 걸립니다.

departmentdescription에 복합 인덱스가 있는 경우 쿼리는 하나의 인덱스 키만 검사합니다. 컬렉션에서 departmentkitchen이고 descriptiongreen 문자열이 포함된 문서가 하나만 있습니다.

그러나 쿼리가 description 필드에서만 단일 필드 텍스트 인덱스를 사용한 경우 쿼리는 인덱스 키를 세 개 검사합니다. 컬렉션에는 description 필드에 문자열 green (이)가 포함된 문서가 세 개 있습니다.

앞의 예시에서 사용된 것과 같은 작은 컬렉션에서는 단일 필드 인덱스와 복합 텍스트 인덱스 간에 성능에 눈에 띄는 차이가 없습니다. 그러나 더 큰 컬렉션에서는 인덱스 항목 스캔이 증가하면 성능이 눈에 띄게 저하될 수 있습니다. 최상의 성능을 위해 동등성 매치에 가장 잘 맞도록 스캔되는 인덱스 항목 수를 제한하는 텍스트 인덱스를 만드세요.

돌아가기

$text 쿼리 결과에 가중치 할당

이 페이지의 내용